language/java

[java] Interface, Abstract의 특징과 차이점

superminy 2021. 2. 23. 14:30
728x90

 

Interface의 특징

- 클래스가 아님

- 오직 추상메서드와 상수만을 멤버로 갖음.

- Implements 키워드를 사용함.

- 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있음.

- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능함.

 

Abstract의 특징

- 추상메서드를 하나 이상 가진 클래스임

- 자신의 생성자로 객체 생성 불가능함.

- 하위 클래스를 참조하여 상위 클래스의 객체를 생성함.

- 하위 클래스를 제어하기 위해 사용함.

 

Interface vs Abstract

 공통점 

- new 연산자로 인스턴스 생성 불가능.

- 프로토타입만 있는 메서드를 가짐

- 사용하기 위해서는 하위클래스에서 확장/구현 해야함

차이점

- 사용하는 키워드가 다름

- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능

 

728x90
반응형