책 내용 질문하기
2권 191쪽 JAVA 문제 관련 문의
도서
2023 시나공 정보처리기사 실기
페이지
191
조회수
305
작성일
2023-04-16
작성자
탈퇴*원
첨부파일

안녕하세요.

 

2권 191쪽 예제 문제에서 

Animal a = new chicken()

에서 자식 클래스인 chicken 클래스의 생성자인 chicken()를 실행하기 이전에,

무조건 부모 클래스의 생성자인 Animal()을 먼저 실행한 후, chicken 클래스의 생성자인 chicken()를 실행하는 것이 순서인데

 

이 문제에서는 부모 클래스인 Animal에는 생성자가 없기 때문에 그냥 바로 자식 생성자인 chicken()을 실행하는 것이다

라고 이해하면 될까요? 

아니면 추상 클래스만의 특징? 인것인가요?

 

답변 기다리겠습니다.

감사합니다.

답변
2023-04-17 10:37:54

안녕하세요 길벗수험서 운영팀입니다.

 

먼저 말씀하신 문의에서 추상클래스의 여부는 아무 영향을 주지 않습니다.

 

클래스가 인스턴스로 생성되어 객체변수로 만들어졌다는 것은 생성자가 실행되었음을 의미합니다.

 - 이는 생성자가 클래스 내에서 정의되어 있지 않아도 자동으로 실행되는 것입니다.

 

형변환(부모클래스 객체변수 = new 자식클래스_생성자)에 있어서 부모클래스의 인스턴스가 생성되고 여기에 자식클래스의 생성자가 실행되면서 덮어쓰기가 수행됩니다.

 - 부모클래스에서 자식클래스와 같은 이름의 변수나 메소드가 자식클래스의 것으로 덮어짐

 

즉 생성자는 다음과 같은 순서로 시행되었다고 보시면 됩니다.

1. 객체변수 a가 생성되면서 Animal의 생성자가 자동 실행

2. chicken 클래스의 생성자가 수동 실행

 

행복한 하루되세요 :)

  • 관리자
    2023-04-17 10:37:54

    안녕하세요 길벗수험서 운영팀입니다.

     

    먼저 말씀하신 문의에서 추상클래스의 여부는 아무 영향을 주지 않습니다.

     

    클래스가 인스턴스로 생성되어 객체변수로 만들어졌다는 것은 생성자가 실행되었음을 의미합니다.

     - 이는 생성자가 클래스 내에서 정의되어 있지 않아도 자동으로 실행되는 것입니다.

     

    형변환(부모클래스 객체변수 = new 자식클래스_생성자)에 있어서 부모클래스의 인스턴스가 생성되고 여기에 자식클래스의 생성자가 실행되면서 덮어쓰기가 수행됩니다.

     - 부모클래스에서 자식클래스와 같은 이름의 변수나 메소드가 자식클래스의 것으로 덮어짐

     

    즉 생성자는 다음과 같은 순서로 시행되었다고 보시면 됩니다.

    1. 객체변수 a가 생성되면서 Animal의 생성자가 자동 실행

    2. chicken 클래스의 생성자가 수동 실행

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.