안녕하세요.
2권 191쪽 예제 문제에서
Animal a = new chicken()
에서 자식 클래스인 chicken 클래스의 생성자인 chicken()를 실행하기 이전에,
무조건 부모 클래스의 생성자인 Animal()을 먼저 실행한 후, chicken 클래스의 생성자인 chicken()를 실행하는 것이 순서인데
이 문제에서는 부모 클래스인 Animal에는 생성자가 없기 때문에 그냥 바로 자식 생성자인 chicken()을 실행하는 것이다
라고 이해하면 될까요?
아니면 추상 클래스만의 특징? 인것인가요?
답변 기다리겠습니다.
감사합니다.
안녕하세요 길벗수험서 운영팀입니다.
먼저 말씀하신 문의에서 추상클래스의 여부는 아무 영향을 주지 않습니다.
클래스가 인스턴스로 생성되어 객체변수로 만들어졌다는 것은 생성자가 실행되었음을 의미합니다.
- 이는 생성자가 클래스 내에서 정의되어 있지 않아도 자동으로 실행되는 것입니다.
형변환(부모클래스 객체변수 = new 자식클래스_생성자)에 있어서 부모클래스의 인스턴스가 생성되고 여기에 자식클래스의 생성자가 실행되면서 덮어쓰기가 수행됩니다.
- 부모클래스에서 자식클래스와 같은 이름의 변수나 메소드가 자식클래스의 것으로 덮어짐
즉 생성자는 다음과 같은 순서로 시행되었다고 보시면 됩니다.
1. 객체변수 a가 생성되면서 Animal의 생성자가 자동 실행
2. chicken 클래스의 생성자가 수동 실행
행복한 하루되세요 :)
-
관리자2023-04-17 10:37:54
안녕하세요 길벗수험서 운영팀입니다.
먼저 말씀하신 문의에서 추상클래스의 여부는 아무 영향을 주지 않습니다.
클래스가 인스턴스로 생성되어 객체변수로 만들어졌다는 것은 생성자가 실행되었음을 의미합니다.
- 이는 생성자가 클래스 내에서 정의되어 있지 않아도 자동으로 실행되는 것입니다.
형변환(부모클래스 객체변수 = new 자식클래스_생성자)에 있어서 부모클래스의 인스턴스가 생성되고 여기에 자식클래스의 생성자가 실행되면서 덮어쓰기가 수행됩니다.
- 부모클래스에서 자식클래스와 같은 이름의 변수나 메소드가 자식클래스의 것으로 덮어짐
즉 생성자는 다음과 같은 순서로 시행되었다고 보시면 됩니다.
1. 객체변수 a가 생성되면서 Animal의 생성자가 자동 실행
2. chicken 클래스의 생성자가 수동 실행
행복한 하루되세요 :)