package ex_inheritance;
public class Ex2 {
public static void main(String[] args) {
/*
* 객체 지향적 관점에서의 is-a / has-a 차이점
* 1) is-a 관계
* - 상속 관계(밀접하게 결합)
* - 상위 클래스의 기능을 하위 클래스가 물려받아 사용
* - 클래스 계층구조에서 좀 더 안정적인 기반을 마련
* - 상속 관계를 통해 생성된 클래스 및 객체는 상속관계에서 밀접하게 결합되므로
* 부모 클래스의 변경이 발생하면 코드가 손상될 위험이 발생
*
* 2) has-a 관계
* - 포함 관계(느슨한게 결합)
* - 상속에 비해서 변경이 발생하더라도 구성 요소를 쉽게 변경
* (코드의 손상이 적거나 없다는 의미)
* - 많은 유연성을 제공
*
*/
}
}
class Person {}
class Spider {}
class SpiderMan extends Person { // Person 클래스를 상속 -> is-a 관계
Spider spider = new Spider();
// Spider 타입의 변수를 통해 Spider 클래스의 멤버를 관리 -> has-a 관계
}