자바는 단 한 개의 클래스만을 상속 받는다. (인터페이스의 경우 예외임_ 다중상속...)
하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스
상수(static final
)와 추상 메서드(abstract method
)의 집합이다.
=> 생성자 가질 수 ❌, 객체화도 ❌
interface 인터페이스이름{
public static final 타입 상수이름 = 값;
public abstract 타입 메서드이름(매개변수목록);
=> public static final
과 public abstract
제어자는 생략이 가능 (컴파일 시 자동으로 추가되기에)
인터페이스는 '추상화'가 추상 클래스에 보다 높다.
추상 클래스가 상속을 통해서 완성이 되는 것처럼 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.
인터페이스를 상속 받았다?
자식 클래스에서 인터페이스가 포함하고 있는 '추상 메소드'를 구체적으로 구현해주어야 한다.
4 다중 구현(다중 상속)이 가능⭕
인터페이스나 추상클래스나 둘이 똑같이 추상 메소드를 통해 상속/구현을 통한 메소드 강제 구현 규칙을 가지는 추상화 클래스이다.
인터페이스 : implements
라는 키워드처럼 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구.현.하는 느낌
추상 클래스 : extends
키워드를 사용해서 자신의 기능들을 하위 클래스로 확.장. 시키는 느낌
추상 클래스 | 인터페이스 | |
---|---|---|
사용 키워드 | abstract | interface |
사용 가능 변수 | 제한 없음 | static final (상수) |
내용1입니다 | 제어자 제한 없음 (public, private, protected, default) | public |
사용 가능 메소드 | 제한 없음 | abstract method, default method, static method, private method |
상속 키워드 | extends | implements |
다중 상속 가능 여부 | 불가능 | 가능 (클래스에 다중 구현, 인터페이스 끼리 다중 상속) |
추상 메소드를 가지고 있어야 한다.
인스턴스화 할 수 없다 (new 생성자 사용 X)
인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 한다.
'인터페이스'와 '추상클래스'를 구현, 상속한 클래스는 ...
=> '추상 메소드'를 반.드.시. 구현하여야 한다.
선언부만 작성하고 구현부는 작성하지 않은 채로 남겨두는 것이 추상 메서드이며,
=> 상속받는 클래스에 따라서 구현되는 내용이 달라질 수 있다.
Inpa Dev 님의 글을 참고하여 작성하였습니다.
s-y-130님의 글을 참고하여 작성하였습니다.