Dev-Kyuu
article thumbnail

오늘 주어진 주특기 입문 과제로 요구조건에 맞는 클래스를 설계하고, 제출하는 과제가 있는데

해당 부분에서 인터페이스를 이용해 '확장에 용이한 형태'로 변경을 하라고 하였다. 그래서 다시금 공부하게 된 인터페이스

 

📌 1. Java 에서의 인터페이스 사용 목적?

  • 객체지향 5원칙(SOLID) - 인터페이스 분리 원칙 
  • 인터페이스 분리 원칙이란, 객체는 자신이 호출하지 않는 메서드에 의존하지 않아야 한다 라는 원칙이다.
  • 부모 클래스에서 모든 교통수단에서 공통적으로 적용이 필요한 기능 + 모든 자식 클래스에서 필요한 기능을 다 생성하고 있을 떄
    기능상으로는 문제가 없지만 모든 자식 클래스들은 이 부모 클래스를 상속했기 때문에 좋든 싫든 해당 메소드를 가지고 있어야한다.

 

  • 하지만 상속 대상인 객체의 메소드를 각 동작별로 구분해 인터페이스를 만든다면, 각 객체가 필요한 인터페이스만을 상속하여 구현하면 되므로 각자가 필요한 메소드만들을 가질 수 있게 된다. 

 

📌 Extends(부모클래스 상속)과 Implements(인터페이스 상속)의 차이점 

 

extends 

  • 부모에서 선언/정의를 모두하며 자식은 메소드/변수를 오버라이딩 없이 그대로 사용할 수 있음
  • 다중 상속 불가

implements 

  • 부모 객체는 선언만 하며 정의(내용)은 자식객체에서에서 오버라이딩 (재정의) 해서 사용해야함
  • 다중 상속 가능
*/ Interface 상속 코드 
public class 자식클래스명 extends 부모클래스명  implements interface명, interface명2 {..}

🫥 근데 interface implements를 통한 구현시 메소드를 어차피 재 정의해야되니 상속의 의미가 아니라고 생각이 들 수 있다 

ㄴ 어제 쓴 글의 생성자와 void의 차이점 처럼 자바를 만든 분이 FM이라서 그렇게 된듯 ㅋ .. 자바가 그렇다는데 그런거지 

profile

Dev-Kyuu

@kyuu_ng

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!