이번 포스팅에서는 추상메서드, 인터페이스의 설명과 차이점에 대해 알아보겠습니다.

 

1. 추상클래스

 

추상클래스는 미완성된 클래스로 상속을 통해 자손클래스에 의해 완성됩니다.(하지만 추상메서드가 없는 추상클래스여도 추상클래스는 유효합니다.)

 

필드, 생성자를 포함할 수 있으며, 반드시 상속을 통해서 구현하여야합니다.

 

클래스를 생성할 때 abstract를 붙여야하며 추상메서드 역시 abstract를 앞에 붙여줘야합니다.

 

 

2. 인터페이스

 

인터페이스는 클래스와 다르며, 상수와 추상메서드만을 허용합니다.

 

인터페이스를 생성할 때 앞에 interface를 붙여야합니다.

 

상수와 메서드를 만들 때 앞에 제어자(public static final, public abstract)를 붙여도 되고, 만약 안붙이더라도 컴파일러가 자동으로 생성해줍니다.

 

 

인터페이스끼리의 상속은 인터페이스로부터만 상속을 받을 수 있으며 다중상속이 가능합니다.

(살짝 어색한 감이 있습니다)

 

 

상속받은 클래스는 반드시 그 인터페이스의 추상메소드를 구현해야합니다.

 

한 클래스에서 여러개의 인터페이스를 상속할 수 있으며, 다중상속이 가능합니다.

 

 

3. 추상클래스와 인터페이스의 공통점

 

추상메서드를 구현해야 하는 공통적인 특징이 있습니다.

 

각 클래스마다의 공통적인 특징을 추상클래스와 인터페이스를 통해 표준화 할 수 있으며, 코드의 간결함과 유지 및 보수에 용이합니다.

 

추상클래스와 인터페이스로 객체생성을 할 수 없고, 반드시 extends나 implements를 통해서 객체생성이 가능합니다.

 

4. 추상클래스와 인터페이스의 차이점

 

추상클래스를 상속받은 클래스는 반드시 추상클래스에 있는 모든 추상메소드를 구현해야 할 필요는 없지만, 인터페이스는 반드시 그 안에 있는 모든 추상메소드를 구현해야합니다.(인터페이스의 강제성이 더 높습니다.)

 

추상클래스는 extends를 통해 상속이 가능하며, 인터페이스는 implements를 통해 상속이 가능한데, 추상클래스는 한번만 상속이 가능하지만, 인터페이스는 다중상속이 가능합니다.

 

추상클래스는 관계가 있는 클래스끼리의 상속이 가능하지만, 인터페이스는 다형성을 통해 관계없는 클래스들끼리의 관계를 맺어줄 수 있습니다.

 

 

 

 

 

출처 : 자바의 정석

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기