자바 클래스(객체) vs 추상클래스 vs 인터페이스
클래스
- 객체를 생성하기위한 클래스(설계도)
- 사용하기위해서는 반드시 객체 생성 = 인스턴스화 = 메모리에 로드한다.
- 구성요소 3가지
- 변수 : 속성
- 메서드 : 동작
- 생성자 : 초기화
- 상속 가능 : 확장 extends 사용가능
- 관계 : 다중상속 불가
- 업캐스팅 가능
추상클래스
- 클래스
- 구성요소 3가지
- 변수
- 상수
- 일반메서드
- 추상메서드
- 생성자
- 상속 가능
- 관계 : 다중상속 불가
- 업캐스팅 가능
- 추상클래시끼리 상속 가능? 가능 extends를 사용
- 상속 후 추상메서드 오버라이딩(구현)해서 사용해야한다.
인터페이스
- 인터페이스는 클래스가 아니라서 구성요소가 다르다
- 구성요소 2가지
- 상수
- 추상메서드
- 상속 가능 => 구현 implements 사용가능
- 인터페이스끼리 상속 가능한가? 가능 extends를 사용
- 관계 : 다중구현 가능
- 추상메서드 : [public abstract]
- 인터페이스안의 모든 메서드의 접근지정자는 default가 아닌
public이다. - 상속 후 추상메서드 오버라이딩(구현)해서 사용해야한다.
1 | // [] 대괄호는 생략이 가능하다는 의미이다. |
비교표
| 비교 | 클래스 | 추상클래스 | 인터페이스 |
|---|---|---|---|
| 클래스인가? | Y | Y | N |
| 구성요소 | 변수, 메서드, 생성자 | 변수, 상수, 일반메서드, 추상메서드, 생성자 | 상수, 추상메서드 |
| 관계 | 다중상속 불가능 | 다중상속 불가능 | 다중구현 가능 |
| 상속가능여부 | 가능 extends(확장) | 가능 extends(확장) | 가능 implements(구현) |
| 업캐스팅가능여부 | Y | Y | Y |
![[OS/WINDOW]배포후 서버재시작에 batch와 윈도우 스케줄러 활용하기](https://cdn.pixabay.com/photo/2012/03/04/00/50/board-22098_960_720.jpg)
![[블로그]헥소테마에서 댓글기능 facebook에서 utterances로 변경하기](https://miro.medium.com/max/1600/1*aOv6h3h_v9PQWa03zGACnw.png)