본문 바로가기

지식/Java

[Java] 상속과 구현, 인터페이스와 추상 클래스의 차이 (extends, implement, interface, abstract class)

- 상속과 구현 의 특징과 차이

상속(extends) :

자식 클래스가 부모 클래스의 메서드 등을 상속받아 사용하며 자식 클래스에서 추가 및 확장을 할 수 있습니다.

이로 인해 재사용성, 중복성의 최소화가 가능합니다.

 

구현(implements) :

부모 인터페이스를 자식 클래스에서 재정의하여 구현하는 것을 말하며, 상속과 달리 반드시 인터페이스의 메서드를 재정의하여 구현해야 합니다.

 

상속은 일반 클래스, abstract(추상) 클래스를 기반으로 구현,

구현은 인터페이스를 기반으로 구현합니다.

 

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

추상 클래스와 인터페이스는 모두 반드시 부모 클래스(인터페이스)의 메서드를 재정의 하여야 합니다.

하지만 차이점은 사용 의도에 따라 다르게 구분됩니다.

 

예를 들어

추상 클래스 : 동물 이라는 추상 클래스에 하위 클래스들은 강아지, 고양이, 돼지, 소 등을 사용하며

인터페이스 : 울부짖기, 걷기, 밥 먹기, 물 마시기 등 행동을 명시하는 경우에 사용됩니다. 

 

특징을 정리하면

추상 클래스 :

extends 키워드를 사용, 자신의 기능들을 하위 클래스로 확장 시킴

관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 사용합니다.

 

인터페이스 :

implements 키워드를 사용, 인터페이스에 정의된 메소드들을 목적에 맞게 기능을 구현

서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우 사용합니다.