야미의 개발

[JAVA] 상속 (extends)와 구현(implements) 차이 , 다중 상속 본문

JAVA

[JAVA] 상속 (extends)와 구현(implements) 차이 , 다중 상속

채야미 2024. 1. 3. 15:31

자바의 상속과 구현

- 상속 extends 사

자식 클래스가 부모 클래스의 매서드 등을 상속 받아 사용, 자식 클래스에서 추가 및 확장 가능 -> 재사용성, 중복성의 최소화

- 구현 implements 

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

 

 

- 상속과 구현의 차이

상속은 일반클래스 abstract 클래스를 기반으로 구현하며, 구현은 인터페이스를 기반으로 구현합니다.

 

한편 다중상속을 피하기 위해 구현을 사용한다고 하는데 다중 상속이 정확히 무엇인지 알아보겠습니다.

 

다중상속

 자바의 일반 클래스는 부모 클래스를 단 하나만 가져야 하므로 여러 부모 클래스를 갖는 다중 상속을 지원하지 않습니다.

그러나 인터페이스는 추상(abstract) 클래스보다 더 추상적이므로 

여러 인터페이스를 상속받는 다중 상속을 지원합니다.

 

또한 인터페이스는 클래스가 아닙니다 

그래서 인터페이스를 구현하는 클래스는 implements를 통해서 구현을 하고 인터페이스끼리의 상속을 받을때는 extends를 사용합니다.

 

결론적으로

상속 

1. 코드의 재사용성

2. 다형성 - 다양한 클래스를 하나의 자료형(상위 클래스)로 선언하거나 형변환하여 각 클래스가 동일한 메소드를 오버라이딩 한 경우 하나의 코드가 다양한 구현 실행 가능

3. 확장성 - 새로운 기능을 추가하거나 기존 기능을 변경할때 기존 클래스를 확장하여 새로운 클래스 생성

 

구현

1. 다중상속을 피하기 위해 - 자바에서는 단일 상속만 지원하므로 여러 클래스로부터 상속을 받아야하는 경우에 인터페이스 사용 

 

 

 

 

간단한 사용 정리는 다른 블로그를 참고해봤습니다

  1. extends는 일반 클래스와 abstract 클래스 상속에 사용되고, implement는 interface 상속에 사용된다.
  2. class가 class를 상속받을 땐 extends를 사용하고, interface가 interface를 상속 받을 땐 extends를 사용한다.
  3. class가 interface를 사용할 땐 implements를 써야하고
  4. interface가 class를 사용할 땐 implements를 쓸수 없다.
  5. extends는 클래스 한 개만 상속 받을 수 있다.
  6. extends 자신 클래스는 부모 클래스의 기능을 사용한다.
  7. implements는 여러개 사용 가능하다.
  8. implements는 설계 목적으로 구현 가능하다.
  9. implements한 클래스는 implements의 내용을 다 사용해야 한다.

https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4

Comments