본문 바로가기

Java

[Java] 추상클래스와 인터페이스의 공통점/차이점

https://ldyble.tistory.com/13 

 

[Java] 추상 클래스

추상 클래스(Abstract Class)란? 객체 간의 공통적 특성을 추출한 클래스. 예를 들어 강아지, 고양이, 사자라는 객체가 있다고 해보자. 이 3가지 객체는 동물이라는 공통점이 있다. 여기서 동물은 구

ldyble.tistory.com

https://ldyble.tistory.com/9

 

[Java] 인터페이스

인터페이스란? 구현체 클래스들이 필수로 구현해야 하는 추상 자료형이다. 즉, 객체의 사용 방법을 가이드라인한 것이라고 할 수 있다. 상수와 추상 메소드로만 이루어져 있고, 구현된 코드가

ldyble.tistory.com

 

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

  • 둘 다 new를 통해 객체를 생성할 수 없다. 오직 자식만이 객체 생성할 수 있음.
  • 둘다 추상 메소드를 가진다.
  • 둘다 하위 클래스에서 추상 메소드를 모두 구현해야 한다.

 

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

추상클래스 인터페이스
상속하여 공통된 기능을 만들고, 확장하기 위함 구현하는 객체들이 같은 동작을 보장하기 위함
다중 상속 불가능 다중 상속 가능
생성자와 일반 변수 모두 가질 수 있다. 생성자와 일반 변수 가질 수 없다.
메소드를 부분적으로 구현할 수 있다. 구현은 할 수 없고, 선언만 가능하다.
extends 키워드 사용 implements 키워드 사용
  • 추상 클래스: 복제 (객체들의 공통 특성들을 모아놓은 클래스)
  • 인터페이스: 설계 (객체 생성을 위한 설꼐도)

추상 클래스는 여러 자식들이 가지고 있는 공통점을 뽑아놓은 클래스이다. 추상 클래스는 클래스라는 이름에서처럼 엄연한 객체이다. 단독으로 생성을 할 수는 없지만 객체이기에 생성자도 사용할 수 있다. 그렇기 때문에 extends라는 키워드도 is a kind of (~의 한 종류) 라는 의미로 쓰인다.

하지만 인터페이스는 객체가 아니라 추상 자료형이다. 객체가 아니기에 생성자도 사용할 수 없다. 그래서 implements(구현하다)라는 키워드를 사용한다.

 

결론

둘은 사용처가 다르다. 추상 클래스는 많은 객체를 생성해야 할 때 각각 객체의 공통점과 개발의 효율성을 위해 생성하지만,

인터페이스는 수많은 개발자가 함께 협업을 할 때 객체 간의 통일성을 강제하기 위한 용도로 사용된다.

 


참고

https://coding-factory.tistory.com/868

'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