교재에서 형 변환 발생 시 부모 클래스와 자식 클래스의 동일한 속성은 자식 클래스의 속성으로 재정의된다는 부분이 있습니다.
예시로 Animal a = new Chicken(); 에서 만약 Animal에도 b라는 속성이, Chicken에도 b라는 속성이 있다면 a.b를 출력했을 때 Chicken의 b가 출력된다는 의미인가요?
하지만 Chatgpt나 타 강의에서 조사해본 결과 개념적으로 생각했을때 a는 Animal의 b와 Chicken의 b를 모두 가지고 있고 a.b를 출력하면 Animal의 b가 출력되는 게 맞는 것 같은데 이는 교재의 설명과 틀린 부분이 있는 것 같아 질문드립니다
안녕하세요. 길벗 수험서 운영팀입니다.
회원님께서 어떤 코드로 chatgtp를 검색을 하셨는지 알수가 없지만
질문하신 문제의 코드를 기준으로 봤을때 교재의 설명이 맞습니다
Animal a = new Chicken( );
Chicken 클래스의 생성자를 이용하여 Animal 클래스의 객체 변수 a를 선언한는데
부모 클래스의 객체 변수를 선언하면서 자식 클래스의 생성자를 사용하면 형 변환이 발생합니다.
이렇게 형 변환이 발생했을 때 부모 클래스와 자식 클래스에 동일한 속성이나 메소드가 있으면
자식 클래스의 속성이나 메소드로 재정의가 되기 때문에
부모 클래스와 자식 클래스에 동일한 메소드가 있을때
해당 메소드를 호출하면 자식 클래스의 메소드가 호출되어 실행이 됩니다
행복한 하루되세요.^^
-
관리자2025-03-07 19:54:45
안녕하세요. 길벗 수험서 운영팀입니다.
회원님께서 어떤 코드로 chatgtp를 검색을 하셨는지 알수가 없지만
질문하신 문제의 코드를 기준으로 봤을때 교재의 설명이 맞습니다
Animal a = new Chicken( );
Chicken 클래스의 생성자를 이용하여 Animal 클래스의 객체 변수 a를 선언한는데
부모 클래스의 객체 변수를 선언하면서 자식 클래스의 생성자를 사용하면 형 변환이 발생합니다.
이렇게 형 변환이 발생했을 때 부모 클래스와 자식 클래스에 동일한 속성이나 메소드가 있으면
자식 클래스의 속성이나 메소드로 재정의가 되기 때문에
부모 클래스와 자식 클래스에 동일한 메소드가 있을때
해당 메소드를 호출하면 자식 클래스의 메소드가 호출되어 실행이 됩니다
행복한 하루되세요.^^