추상 클래스 (Abstract Class)
일반 클래스와 별 다를 것이 없지만, 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이며 미완성 설계도에 비유할 수 있습니다. (메소드의 바디가 없다.)
abstract class ClassName {
...
public abstract void methodName();
}
인터페이스 (Interface)
다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 클래스와 다르게 다중상속(구현)이 가능하며 기본 설계도라고 표현할 수 있습니다.
interface InterfaceName {
public static final constName = value;
public abstract void methodName();
}
추상 클래스와 인터페이스 차이점
1. 추상 클래스는 extends 키워드를 사용하여 상속하며, 다중 상속은 불가능합니다. 반면 인터페이스는 implements 키워드를 사용하여 상속하며, 다중 상속이 가능합니다.
2. 추상 클래스는 일반 변수, 생성자, 일반 메서드, 추상 메서드를 모두 가질 수 있는 반면 인터페이스는 상수와 추상 메서드만 가질 수 있고, 생성자와 일반 변수는 가질 수 없습니다.
3. 추상 클래스는 extends(상속, 확장의 느낌) 키워드 그대로 자신의 기능들을 하위로 확장시키는 것으로 볼수 있고, 인터페이스는 implements(상속, 구현의 느낌) 키워드처럼 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 동일한 기능으로 구현하는 것으로 볼 수 있습니다.
4. 추상 클래스는 이를 상속할 각 객체들의 공통점을 찾아 추상화시켜놓은 것으로 상속 관계를 타고 올라갔을 때, 같은 부모 클래스를 상속하며, 부모 클래스가 가진 기능들을 구현해야 하는 경우에 사용합니다. 반면 인터페이스는 상속 관계를 타고 올라갔을 때, 다른 부모 클래스를 상속하더라도 같은 기능이 필요한 경우에 사용됩니다.
'코딩 공부 > web & Java' 카테고리의 다른 글
[SQL] 정규화 (0) | 2022.09.14 |
---|---|
[SQL] SUBSTRING, SUBSTRING_INDEX (0) | 2022.09.14 |
[JAVA] 오버로딩과 오버라이딩 (0) | 2022.09.13 |
[JAVA] 조건문과 반복문, 반복문 제어 (0) | 2022.09.11 |
[JAVA] 연산자 (1) | 2022.09.10 |