강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jongbin7245님의 프로필 이미지
jongbin7245

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

(기출) 2025년 2회 코드문제-1

메서드 오버라이드

작성

·

15

0

2025년 2회 코드문제 -1

11:40

이해 안되는게 있는데

자식에서 재정의 하면 자식에서 실행되어야 하는거 아닌가요? 순수 부모여서그런건가요?

또한 만약 Parent ref= new 자식이였다면

4P가 되는건가요? 스테틱이면 부모꺼 출력으로 알고 있어서 혹시 제가 잘못 알고 있는부분있으면 추가적으로 알려주세요 ㅜ

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. jongbin7245님.

자바에서 메서드 오버라이딩(Overriding)과 관련하여 혼란스러울 수 있는 부분에 대한 설명을 드리겠습니다.

메서드 오버라이딩

  • 오버라이딩은 자식 클래스에서 부모 클래스의 메서드를 재정의하는 것입니다. 이때, 실제 객체의 타입에 따라 오버라이딩된 메서드가 실행됩니다.
  • 즉, Parent ref = new 자식(); 구조일 경우, ref가 자식 객체를 참조하고 있으므로, 자식 클래스의 오버라이딩된 메서드가 실행됩니다.

정적 메서드 및 변수

  • 정적(static) 메서드정적 변수는 클래스 소속이므로, 오버라이딩이라는 개념이 적용되지 않습니다. 따라서 참조 타입의 클래스에 정의된 메서드나 변수가 호출됩니다.
  • 만약 Parent ref = new 자식();인 상황에서 정적 메서드나 변수를 호출하면, 부모 클래스의 것이 호출됩니다.

관련 예시

class Parent {
    static int x = 2;
    int y = 3;
    
    static void printStatic() {
        System.out.println("Parent static method");
    }

    void print() {
        System.out.println("Parent instance method");
    }
}

class Child extends Parent {
    static int x = 4;
    int y = 5;
    
    static void printStatic() {
        System.out.println("Child static method");
    }

    @Override
    void print() {
        System.out.println("Child instance method");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent ref = new Child();
        
        // 정적 변수와 메서드
        System.out.println(ref.x); // 2 출력
        ref.printStatic(); // "Parent static method" 출력
        
        // 인스턴스 메서드
        ref.print(); // "Child instance method" 출력
    }
}

여기서 보듯이, ref.print();는 “Child instance method”를 출력하지만, 정적 변수나 메서드는 Parent 클래스의 것이 호출됩니다.

자바의 이 특성은 객체 지향 프로그래밍에서 다형성을 구현하는 데 중요한 요소입니다. 필요에 따라 인스턴스 변수와 정적 변수/메서드의 동작 차이를 염두에 두시길 바랍니다.

관련 토론이나 추가 설명이 필요하다면, 다음 링크들을 참고해 보시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jongbin7245님의 프로필 이미지
jongbin7245

작성한 질문수

질문하기