본문 바로가기

Java

[Java] 추상 클래스 & 인터페이스

📌 추상 클래스 (abstract class)

- 클래스는 일반 클래스와 추상 클래스로 나뉜다. 추상 클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다.
- 구체적이지 않은 추상화된 클래스를 말한다. 미완성 설계도에 비유할 수 있다.
ex) 고양이, 강아지 클래스가 아닌 포유류 클래스와 같은 것을 의미한다.

 

📌 추상 클래스 특징

  • 추상 클래스는 반드시 abstract 클래스 명으로 표기되어야 한다.
  • 추상 클래스는 자체적으로 객체 생성이 불가하다. 따라서 상속을 통한 자식 클래스에서 객체를 생성해야 한다.
  • 추상 클래스는 다중 상속이 불가하다.
  • 추상 클래스는 추상 메서드, 일반 메서드, 멤버 변수, 생성자를 구현할 수 있다.
  • abstract로 선언한 메서드를 자식 클래스에서 반드시 구현해야 한다. (오버 라이딩)
    이는 자식 클래스에서 추상 메서드를 구현하도록 강제하는 것이다.

 

📌 인터페이스

- 인터페이스는 일종의 추상 클래스로, 추상 메서드를 갖지만 추상 클래스보다 추상화 정도가 높다.
- 추상 클래스를 미완성 설계도라고 하면, 인터페이스는 구현된 것은 아무것도 없는 밑그림만 그려진 기본 설계도라고 할 수 있다.

 

📌 인터페이스 특징

  • 인터페이스 상속은 implements 키워드를 사용한다.
  • class 가 아니고 interface 키워드를 사용한다.
  • 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없다.
  • 인터페이스는 객체를 생성하지 않기 때문에 멤버 변수, 생성자가 없다. 
  • 모든 변수는 public static final (상수) 이어야 하고, 해당 키워드는 생략이 가능하다.
  • 오버 라이딩을 위한 메서드이기 때문에 private 메서드는 의미가 없으므로, 모든 메서드는 public abstract 이어야 하고, 이 키워드 또한 생략 가능하다.
  • static 메서드와 default 메서드를 사용할 수 있다.
  • 다중 상속 구현이 가능하다.