<aside> 💡 과정 목표

  1. 상속(Inheritance) 개념에 대한 확실한 이해
  2. 상속의 단점 및 문제점 이해
  3. Composition 개념에 대한 이해와 장점 이해

</aside>

Notice

1. 상속(Inheritance)

2. 상속의 문제점

<aside> 💡 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다.

</aside>

class Parent {

    Parent() {}

    protected void doSomething() {
        System.out.println("hello world!!");
    }

    protected String doSomething2() {
        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < 10; i++) {
            sb.append(i).append(" ");
        }

        return sb.toString();
    }
}

class Child extends Parent {

    Child() {
        super();
    }

    @Override
    protected void doSomething() {
        System.out.println("hello world child");
    }

    public void process() {
        String rawQuery = doSomething2();

        if (rawQuery.length() == 0) {
            System.out.println("empty string");
        } else {
            System.out.println("process complete");
        }
    }
}

public class InheritanceExample {

    public static void main(String[] args) {
        Child child = new Child();

        child.doSomething();
        child.process();
    }
}