상속 (Inheritance) (수평적 구조 VS 수직적 구조)

 

상속 ➜ 클래스의 설계 (행위적 측면)

  • 수평적 설계

    • 코드의 중복이 발생
    • 새로운 요구사항에 대한 코드의 수정이 불가피
    • 관리가 어렵다 (부모 자식 관계)
  • 수직적 설계 (계층화, 상속구조)

    • 수평적 설계의 단점 극복
    • 확장이 쉽다
    • 코드가 복잡해진다. (이점이 많다)

 


 

상속 개념

자식이 생성되기 전에 부모를 먼저 생성
부모부터 자식까지 차례로 객체가 생성된다.


//상속 Memory
//상속관계는 메모리적으로 이해할 것
/*

------------
|  Object   |  <<extends  상속 체이닝
------------      |
|  Animal   |  ___|  
------------      |
| Dog | Cat |  ___|
-------------
*/

//상속에서 부모와 자식에 연결되는 방법 -> 생성자
//super() : 자신의 생성자에서 부모의 생성자를 호출

public class Animal extends Object {
    public String name;
    public String part;
    
    public Animal() {
        super();       //부모의 new Object(); 호출
    } 
    public void eat() {} //공통
}

public class Dog extends Animal {
    public Dog() {
        super();    //부모의 new Animal(); 호출
    }
    public void eat() {} //공통
}

public class Cat extends Animal {
    public Cat() {
        super();    //부모의 new Animal(); 호출
    }
    public void eat() {} //공통
}



 

reference

인프런 강의 : JAVA TPC