less than 1 minute read

추상 클래스란(Abstract Class)

추상 클래스는 계승될 것을 전제로 한 클래스다. 
Class에 abstract 수식자를 지정함으로써 추상 클래스를 정의할 수 있다.

추상 클래에스에는 추상 메소드라는 구현하지 않은 메소드를 하나 이상 정의할 수 있는데 
추상 클래스를 상속받은 클래스에서는 추상 메소드를 반드시 구현해야 한다.
일반 메서드도 구현이 가능하다.

추상 클래스의 특징

  1. 추상 클래스는 new 연산자를 이용하여 객체를 생성할 수 없다.
  2. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용된다.
  3. 추상 클래스는 단일 상속만 가능하며 일반 변수를 가질 수 있다.
  4. 추상 클래스는 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적이다.

인터페이스란(Interface)

인터페이스란 추상 클래스보다 한 단계 더 추상화된 클래스이다.
인터페이스의 모든 메서드들은 추상 메소드이다.(자바 8 버전부터 default 예약어를 통해 일반 메서드 구현이 가능하다.)
그렇기때문에 abstract 키워드를 적지 않아도 된다.

추상 클래스와 마찬가지로 상속받은 클래스에서는 추상 메소드를 반드시 구현해야 한다.

인터페이스의 특징

  1. 인터페이스는 static final 필드만 가질 수 있고 생략이 가능하다.
  2. 추상 클래스와 마찬가지로 new 연산자를 사용하여 객체를 생성할 수 없다.
  3. 추상 클래스와 다르게 다중 상속이 가능하다.
  4. 인터페이스끼리 상속을 할 때는 extends 키워드를 사용한다.

차이점

- 추상클래스의 목적은 상속을 받아서 기능을 “확장”시키는 것(부모의 유전자를 물려받는다.)

- 인터페이스의 목적은 구현하는 모든 클래스에 대해 같은 동작을 보장하는 것(부모로부터 유전자를 물려받는 것이 아니라 사교적으로 필요에 따라 결합)

Categories:

Updated:

Comments