해결된 질문
작성
·
32
·
수정됨
답변 2
0
자식 클래스가 재정의하지 않은 것인지 판단하는 것은 부모 클래스에 show(int x)로 정의된 메서드가 없어서 부모클래스에서 정의되지 않았기에 자식클래스가 재정의되지 않았다고 판단되고
--> 맞습니다. 재정의하려면 이름과 파라미터 종류와 갯수까지 똑같아야 합니다.
그렇기에 업캐스팅 원칙에 의해 부모 클래스에 없는 것은 호출하지 않기때문에 출력값이 부모클래스에서 나온것일까요?
--> 네 맞습니다. 지금 show()는 파라미터가 없는 것을 호출한 것입니다. 부모 것이 실행됩니다.
둘 다 올바르게 이해하셨습니다.
정확하게 오버라이딩을 설명하려면 그 외에도 접근 제어자가 부모보다 좁아지면 안된다, 리턴 타입이 부모 메서드랑 같거나 더 구체적이어야 한다.. 가 있는데 정보처리기사 실기 범위가 아니니까 저정도만 알고 계셔도 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 라따뚜이님.
상속과 메소드 오버라이딩(재정의)는 객체 지향 프로그래밍에서 중요한 개념입니다. Java에서 자식 클래스가 부모 클래스의 메소드를 재정의했는지 판단하고, 그에 따른 실행 흐름을 이해하기 위해선 아래 개념을 숙지하는 것이 필요합니다.
메소드 시그니처 확인: 자식 클래스가 부모 클래스의 메소드를 재정의하려면, 동일한 이름, 매개변수, 리턴 타입을 가져야 합니다.
@Override 어노테이션: 자식 클래스에서 메소드를 재정의할 때 이 어노테이션을 사용하여 컴파일러가 확인할 수 있도록 합니다. 재정의가 제대로 되었는지 선언할 수 있으며, 명확하게 의도를 나타냅니다.
재정의가 된 경우: 자식 클래스의 메소드를 호출합니다. 자식 클래스에서 동일한 메소드가 재정의되어 있다면 그 메소드가 실행됩니다.
재정의가 되지 않은 경우: 상속에 의해 부모 클래스의 메소드를 사용합니다. 자식 클래스에 특정 메소드가 없다면 부모 클래스에 정의된 메소드를 자동으로 호출합니다.
아래는 관련된 질문과 구체적인 설명이 있는 유사한 질문 링크입니다:
라따뚜이님의 이해에 도움이 되기를 바라며, 더 궁금한 점이 있는 경우 추가로 질문해 주세요!
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.