[Java] 추상 클래스
추상 클래스(Abstract Class)란? 객체 간의 공통적 특성을 추출한 클래스. 예를 들어 강아지, 고양이, 사자라는 객체가 있다고 해보자. 이 3가지 객체는 동물이라는 공통점이 있다. 여기서 동물은 구
ldyble.tistory.com
[Java] 인터페이스
인터페이스란? 구현체 클래스들이 필수로 구현해야 하는 추상 자료형이다. 즉, 객체의 사용 방법을 가이드라인한 것이라고 할 수 있다. 상수와 추상 메소드로만 이루어져 있고, 구현된 코드가
ldyble.tistory.com
추상 클래스와 인터페이스의 공통점
- 둘 다 new를 통해 객체를 생성할 수 없다. 오직 자식만이 객체 생성할 수 있음.
- 둘다 추상 메소드를 가진다.
- 둘다 하위 클래스에서 추상 메소드를 모두 구현해야 한다.
추상 클래스와 인터페이스의 차이점
추상클래스 | 인터페이스 |
상속하여 공통된 기능을 만들고, 확장하기 위함 | 구현하는 객체들이 같은 동작을 보장하기 위함 |
다중 상속 불가능 | 다중 상속 가능 |
생성자와 일반 변수 모두 가질 수 있다. | 생성자와 일반 변수 가질 수 없다. |
메소드를 부분적으로 구현할 수 있다. | 구현은 할 수 없고, 선언만 가능하다. |
extends 키워드 사용 | implements 키워드 사용 |
- 추상 클래스: 복제 (객체들의 공통 특성들을 모아놓은 클래스)
- 인터페이스: 설계 (객체 생성을 위한 설꼐도)
추상 클래스는 여러 자식들이 가지고 있는 공통점을 뽑아놓은 클래스이다. 추상 클래스는 클래스라는 이름에서처럼 엄연한 객체이다. 단독으로 생성을 할 수는 없지만 객체이기에 생성자도 사용할 수 있다. 그렇기 때문에 extends라는 키워드도 is a kind of (~의 한 종류) 라는 의미로 쓰인다.
하지만 인터페이스는 객체가 아니라 추상 자료형이다. 객체가 아니기에 생성자도 사용할 수 없다. 그래서 implements(구현하다)라는 키워드를 사용한다.
결론
둘은 사용처가 다르다. 추상 클래스는 많은 객체를 생성해야 할 때 각각 객체의 공통점과 개발의 효율성을 위해 생성하지만,
인터페이스는 수많은 개발자가 함께 협업을 할 때 객체 간의 통일성을 강제하기 위한 용도로 사용된다.
참고
'Java' 카테고리의 다른 글
[Java] 상속 (0) | 2023.09.01 |
---|---|
[Java] 열거 타입(Enum) (0) | 2023.09.01 |
[Java] 추상 클래스 (0) | 2023.09.01 |
[Java] static의 의미와 사용법 (0) | 2023.09.01 |
[Java] this (0) | 2023.09.01 |