[TIL] 상속과 인터페이스

※ 본 글은 아래 도서를 공부한 후 정리한 내용입니다.

📚 스프링 입문을 위한 자바 객체지향의 원리와 이해


인터페이스란?

인터페이스는 is a able to 관계

  • 구현 클래스 is able to 인터페이스
  • 해석 : 구현 클래스는 인터페이스 할 수 있다.
  • 예제 : 고래는 헤엄 칠 수 있다.

예) 자바 API에서도 be able to 형식의 인터페이스를 찾아볼 수 있다!

  • Serializable 인터페이스 : 직렬화 할 수 있는
  • Cloneable 인터페이스 :복제할 수 있는
  • Comparable 인터페이스 : 비교할 수 있는
  • Runnable 인터페이스 : 실행할 수 있는

상위 클래스는 하위 클래스에게 물려줄 특성이 많을수록 좋을까? 인터페이스는 구현을 강제할 메서드가 많을수록 좋을까?

상위 클래스는 물려줄 특성이 풍성할수록 좋고, 인터페이스는 구현을 강제할 메서드의 개수가 적을수록 좋다. 상위 클래스가 풍성할수록 좋은 이유는 LSP(리스코프 치환 원칙)에 의하고, 인터페이스가 적을수록 좋은 이유는 ISP(인터페이스 분할 원칙)에 따른 이유다. 자세한 내용은 SOLID를 살펴보자!!

인터페이스 예제 코드

public class 동물 {
 String myClass; 
 	동물(){
    		myClass ="동물";
     	}
      
       	void showMe(){
        	System.out.println(myClass);
        }
 }
public interface 날수있는 { 
	void fly();
}
public interface 헤어칠수있는 { 
	void swim();
}
public class 포유류 extends 동물 {
	포유류(){
   		myClass = "포유류";
   	}
}
public class 고래 extends 포유류 implements 헤엄칠수있는{
	고래(){
   		myClass = "고래";
	}
   @Override
   public void swim(){
   	System.out.println(myClass + "수영 중!!");
   }
}
public class 박쥐 extends 포유류 implements 날수있는{
	박쥐(){
   		myClass = "박쥐";
	}
   @Override
   public void swim(){
   	System.out.println(myClass + "날고있음!!");
   }
}
public class Driver{
	publis static void main(String[] args){
    		날수있는 날라리 = new 박쥐();
            	날라리.fly();
 
                헤엄칠수있는 맥주병 = new 고래();
                고래.swim();
     	}
}

실행 결과

박쥐날고있음!!
고래수영중!!

상속과 UML 표기법

좋은 웹페이지 즐겨찾기