※ 본 글은 아래 도서를 공부한 후 정리한 내용입니다.
📚 스프링 입문을 위한 자바 객체지향의 원리와 이해
상위 클래스는 물려줄 특성이 풍성할수록 좋고, 인터페이스는 구현을 강제할 메서드의 개수가 적을수록 좋다. 상위 클래스가 풍성할수록 좋은 이유는 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(); } }
실행 결과
박쥐날고있음!! 고래수영중!!