Dog 객체는 Animal 부분을 먼저 만들고 Dog 기능을 얹는다

자식 생성자는 부모 생성자를 먼저 호출해 기반 부분을 완성한 뒤, 자식 멤버를 초기화합니다. 소멸은 그 반대 순서입니다.

1. 부모 생성
Animal(n, "개", a)
name, species, age가 먼저 준비된다.
2. 자식 생성
breed 초기화
Dog 전용 상태가 객체에 붙는다.
3. 메서드 사용
displayInfo(), bark()
부모 기능과 자식 기능을 함께 호출한다.
객체 안의 Base 부분

Animal이 가진 공통 정보

이름과 나이 조회, 기본 정보 출력처럼 모든 Animal에 공통인 책임을 담습니다.

name = "바둑이" species = "개" age = 3 displayInfo(), getName()
객체 안의 Derived 부분

Dog가 추가한 전용 정보

견종, 짖기, Animal 출력 뒤 견종을 덧붙이는 override가 Dog 쪽 책임입니다.

breed = "진돗개" bark() displayInfo() override
시점 호출되는 함수 읽어야 할 의미
생성 시작 Animal 생성자 → Dog 생성자 기반 클래스가 준비되어야 자식 멤버가 안전하게 붙는다.
사용 중 getName(), bark(), displayInfo() 상속받은 인터페이스와 추가 인터페이스를 같은 객체에서 쓴다.
소멸 시작 Dog 소멸자 → Animal 소멸자 자식 자원을 먼저 정리하고 부모 부분을 마지막에 정리한다.