■ 추상클래스 (abstract)
- 추상 메서드를 선언하여 상속을 통해 자식 클래스에서 완성하도록 유도하는 클래스 "미완성 설계도"
- 클래스를 abstract로 지정하면 new를 통해 객체 생성 X
- interface의 메소드와 다르게 구현 부분 X
- abstract로 선언한 메소드를 반드시 자식 클래스에서 구현해야 함(오버라이딩)
- 다중 상속 X
■ Code
abstract class 클래스A{
public abstract void 메서드();
}
class classB extends classA{
@Override
public void 메서드(){
... //구현
}
}
■ 인터페이스 (interface)
- 추상 클래스와는 다르게 구현부가 있는 일반 메서드, 일반 변수 멤버 등을 가질 수 없음 "기본 설계도"
- 모든 멤버 변수는 public static final이어야 하고, 생략 가능
- 모든 메서드는 public abstract이어야 하고, 생략 가능
- 다중 상속 가능
■ Code
interface 인터페이스{
public static final 상수 = 값;
public abstract void 메서드();
}
■ 정리
- 추상 클래스는 extends(확장)처럼 자신의 기능들을 하위로 확장
- 인터페이스는 implements(구현)처럼 인터페이스에 정의 된 메서드를 각 클래스의 목적에 맞게 동일한 기능으로 구현
- 추상 클래스: 자식 클래스 is kind of 부모 클래스,
- 인터페이스: 자식 클래스 is able to 부모 인터페이스
추상 클래스 | 인터페이스 | |
사용 키워드 | abstract | interface |
사용 가능 변수 | 제한X | static final (상수) |
사용 가능 접근 제어자 | 제한X | public |
상속 키워드 | extends | implements |
다중 상속 | X | O |
공통점 | 추상 메서드를 가지고 있음 | |
인스턴스화 X (new 생성자 사용 X) | ||
인터페이스와 추상 클래스를 구현, 상속한 클래스는 추상 메소드를 반드시 구현 |
'Java > TIL (Today I Learned)' 카테고리의 다른 글
[TIL] QueryDsl 설정법(SpringBoot 3.0이상) (0) | 2023.11.15 |
---|---|
[JAVA] 에라토스테네스의 체 (0) | 2023.03.20 |
[JAVA] 유클리드 호제법(GCD / LCD) (0) | 2023.03.15 |
[JAVA] contains() / replace() (0) | 2023.02.07 |
[JAVA] StringBuilder (0) | 2023.02.06 |
댓글