Java

Java 객체지향 3

jmboy 2024. 4. 4. 17:41

13. final keyword

  • field 앞에 final이 올 경우 : 해당 필드가 값을 변경할 수 없다 . → 상수로 사용
  • method 앞에 final 이 올 경우 : overriding 못함.
  • Class 앞에 final이 올 경우 : 해당 클래스를 아예 상속 할 수 없다.

14. abstract class ( 추상 클래스 )

  • 메서드의 선언만 있고, 정의가 없다.
  • 선언만 되어있는 메서드 - 추상 메서드
  • 클래스 내에 추상 메서드가 단 1개라도 존재한다면, abstract class로 잡아야 한다.
    • 아직 완성되지 않은 클래스 → 인스턴스를 직접적으로 파생시킬수 없다.
    ⇒ 하위 클래스에서 상속 받아 @Override 을 해서 완성을 한다.

💡 왜 abstract class를 사용하는가?

  • class간의 결합도를 낮추면서 사용할 수 있다.

15. interface

  • 클래스 대용으로 사용 ( 특수한 경우 사용 )
  • interface안에 method는 모두 추상 메서드.
    • public abstract는 포함해준다. ( 생략 )
  • Interface 안에 field도 나올 수 있다. 상수만 가능. → final
    • 인스턴스를 만들어야 필드를 사용할 수 있는데 인터페이스는 직접 만들 수 없다. → 메서드 area에 만들어야함 → static 으로 올리는 방법밖에 없다. public static final 은 무조건 붙어서 생략 가능.
  • 인터페이스 사용 → 구현해서 사용한다. implements
    • 인터페이스에서 인터페이스를 상속 받아 확장할 때는 extends 를 사용한다.
  • class의 확장과 다르게, 인터페이스는 다중 구현이 가능하다.
    • is - a relationship이 성립한다

Interface - Abstract Class의 가장 큰 차이는 다중 상속의 차이... !