티스토리 뷰
추상 클래스
하나 이상의 메서드가 추상메서드이거나 abstract로 정의된 경우
public abstract class 클래스이름 {
public abstract void 메서드이름();
}
- 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스 입니다. (추상 클래스를 구현한 클래스의 인스턴스는 만들 수 있다.)
- 추상 메소드는 하위 클래스에서 메소드의 구현을 강제해야 합니다.
- 추상 메소드를 포함하는 클래스는 반드시 추상 클래스여야 합니다.
- 상속하는 집합간에는 연간관계가 있습니다.
- 다중 상속이 불가능합니다.
인터페이스
모든 메서드가 추상메서드인 경우
인터페이스는 ==상수와 추상메서드== 의 집합이다.
interface 인터페이스이름 {
public abstract void 메서드이름();
public default void 메서드이름() {};
}
- 모든 멤버 변수는
public static final
이어야 하며, 이를 생략할 수 있습니다. - 모든 메소드는
public abstract
이어야 하며, 이를 생략할 수 있습니다. - Java 8 부터는 static, default method를 사용할 수 있습니다.
- 다중상속이 가능합니다.
- 상속하는 집합간에는 연관관계가 존재하지 않을 수 있습니다.
차이점
(추상) 클래스 : extends 사용
- 상속은 재사용과 확장성을 위한 것.
- ==is kind of== 관계. 자식 클래스는 부모 클래스의 한 종류여야 함.
- 다시 말해 자식은 부모클래스의 메서드를 재사용하고 확장할 수 있다.
인터페이스 : implements
- 기능을 강제하도록 한다. (인터페이스에 정의된 모든 메서드를 구현해야되기 때문.)
- ==is able to== 관계
상속은 물려줄 특성,메소드가 많을 수록 좋고, 인터페이스는 구현해야 될 메소드가 적을 수록 좋다.
참고자료
'🧩 자바' 카테고리의 다른 글
[Data Structure] Tree (0) | 2023.06.01 |
---|---|
BFS, DFS (0) | 2023.05.16 |
[Data Structure] 큐 (0) | 2023.02.01 |
[Data Structure] 스택 (0) | 2023.01.31 |
[Data Structure] 단순 연결 리스트 (0) | 2023.01.26 |