📌 추상 클래스 (abstract class)
- 클래스는 일반 클래스와 추상 클래스로 나뉜다. 추상 클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다.
- 구체적이지 않은 추상화된 클래스를 말한다. 미완성 설계도에 비유할 수 있다.
ex) 고양이, 강아지 클래스가 아닌 포유류 클래스와 같은 것을 의미한다.
📌 추상 클래스 특징
- 추상 클래스는 반드시 abstract 클래스 명으로 표기되어야 한다.
- 추상 클래스는 자체적으로 객체 생성이 불가하다. 따라서 상속을 통한 자식 클래스에서 객체를 생성해야 한다.
- 추상 클래스는 다중 상속이 불가하다.
- 추상 클래스는 추상 메서드, 일반 메서드, 멤버 변수, 생성자를 구현할 수 있다.
- abstract로 선언한 메서드를 자식 클래스에서 반드시 구현해야 한다. (오버 라이딩)
이는 자식 클래스에서 추상 메서드를 구현하도록 강제하는 것이다.
📌 인터페이스
- 인터페이스는 일종의 추상 클래스로, 추상 메서드를 갖지만 추상 클래스보다 추상화 정도가 높다.
- 추상 클래스를 미완성 설계도라고 하면, 인터페이스는 구현된 것은 아무것도 없는 밑그림만 그려진 기본 설계도라고 할 수 있다.
📌 인터페이스 특징
- 인터페이스 상속은 implements 키워드를 사용한다.
- class 가 아니고 interface 키워드를 사용한다.
- 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없다.
- 인터페이스는 객체를 생성하지 않기 때문에 멤버 변수, 생성자가 없다.
- 모든 변수는 public static final (상수) 이어야 하고, 해당 키워드는 생략이 가능하다.
- 오버 라이딩을 위한 메서드이기 때문에 private 메서드는 의미가 없으므로, 모든 메서드는 public abstract 이어야 하고, 이 키워드 또한 생략 가능하다.
- static 메서드와 default 메서드를 사용할 수 있다.
- 다중 상속 구현이 가능하다.
'Java' 카테고리의 다른 글
[Java] JDBC(Java DataBase Connectivity) 알아보기 (1) | 2023.06.16 |
---|---|
[Java] 배열(Array) 특징 & 사용법 (0) | 2023.05.10 |
[Java] Call by value ? & Call by Reference ? (0) | 2022.05.31 |
[Java] Enum ? 열거형 (Enumeration) (0) | 2022.05.27 |
[Java] 객체지향 5원칙 SOLID (0) | 2022.05.24 |