단독적으로 공부 시 이해가 잘 되는 듯 하나, 추후 실제 코드를 작성하려다보니 상속, 추상클래스, 인터페이스의 개념이 머릿속에서 뒤죽박죽 섞이기 시작했다.
그리하여 정확한 쓰임새와 차이점을 하나하나 짚어 정리해보고자 한다.
공통점 | 객체 생성 | 객체를 생성(인스턴스화) 할 수 없다. |
추상 메소드 | 추상 메소드를 포함한다. | |
기능적 목적 | 상속받는 하위클래스에서는 추상 메소드를 반드시 재정의하여 구현해야한다. |
- 설계도에 비유?
인터페이스는 일종의 추상 클래스이다.
추상 클래스를 '미완성 설계도' 라고 한다면 (상속을 통해 자손 클래스에서 완성하도록 유도),
인터페이스는 '기본 설계도' 이다.
- 목적
추상 클래스는 자신의 기능을 하위클래스에서 확장시키는 것 (extends : 확장)
관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 (부모-자식 관계)
공통의 필드나 같은 부모 클래스의 기능을 사용하거나, 공통으로 사용할 구현된 메소드가 필요할 때 사용
인터페이스는 인터페이스에 정의된 메소드대로 각 클래스가 어떤 멤버를 갖추고 있어야하는지 알려주는 명세서 같은 존재
서로 관련성이 업슨 클래스들이 인터페이스를 구현하게 되는 경우
다중 상속이 필요하거나, 구현 방식 정의 없이 추상화만 필요할때 사용.
- 추상 클래스
일반 클래스와 동일하다. (생성자, 일반 메서드 포함 가능. 구체적인 로직이나 상태 갖음) |
extends |
하위 클래스에서 메소드의 구현을 강제 |
사용 가능 변수에 제한이 없다 |
사용 가능 접근 제어자에 제한이 없다 |
사용 가능 메서드에 제한이 없다 |
다중 상속이 불가능 |
- 인터페이스
클래스가 아닌 인스턴스라는 고유한 형태 가지고 있다. (구체적인 로직이나 상태 갖을 수 없음) |
implements |
모든 멤버 변수는 public static final |
모든 메서드는 public abstract |
사용 가능 변수 - 상수 (static final) |
사용 가능 접근제어자 - public |
다중 상속 가능 ★ |
- 추상 클래스만 사용한다면?
자바에서는 클래스를 통한 다중 상속을 지원하지 않기 때문에,
공통이 되는 기능이 필요할 시에 번거로움이 생김
- 인터페이스만 사용한다면?
인터페이스가 모든 기본 틀을 구성한다면 공통에 필요한 기능들은 오버라이드하여 재정의 해야해서 번거로움이 생김
'Programming Language > JAVA' 카테고리의 다른 글
[Do it 자바 프로그래밍 입문] 12. 자료구조 (1) | 2023.06.13 |
---|---|
[Do it 자바 프로그래밍 입문] 11.기본 클래스 (0) | 2023.06.13 |
기본 이론(1) (0) | 2023.05.28 |
인터페이스(interface) (0) | 2023.05.25 |
[Do it 자바 프로그래밍 입문] 10.인터페이스 (0) | 2023.05.25 |