inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

Java: 상속을 정리하는 문제 10개

부모 클래스의 메서드 상속 관련 질문2

해결된 질문

92

주무세요

작성한 질문수 19

0

18:41

 

유형 8에서는 업캐스팅 형태일때, 메소드를
부모: static void display()
자식: static void display()
위와 같이 선언하여야 하며, 부모 메소드에서 static을 없애면 에러가 난다고 하셨습니다.

그렇다면 만약,
유형 9와 같이 업캐스팅 형태가 아니고,
Child obj = new Child(); 로 인스턴스를 생성하였는데,
부모: static void display()
자식: void display()
와 같은 형태로 메소드가 구성되어 있다면
obj.display()를 했을때, 에러가 발생하나요?

 

자식에도 static이 있어야지 상속이 가능하다는 부분이 업캐스팅일때만 적용되는건지, 업캐스팅이 아니어도 동일하게 적용되는건지 궁금합니다.

python java c 정보처리기사

답변 2

1

주말코딩

네 오류 발생합니다. 아래와 같이 말씀하시는 것이죠?

 

public class TestInheritance {
    public static void main(String[] args) {
        Child obj = new Child();
        obj.display();
    }
}


class Parent {
    static void display() {
        System.out.println("Parent display");
    }
}

class Child extends Parent {
    void display() {
        super.display();
        System.out.println("Child display");
    }
}

 

정적 메서드는 클래스 자체로 사용하는 것이고, 인스턴스 메서드는 해당 객체가 사용하는 메서드입니다.

정적 메서드를 상속 받았는데 인스턴스 메서드처럼 사용하면 오류 발생합니다.

 

출력문:

ERROR!

/tmp/VyVZtZAfH2/Main.java:16: error: display() in Child cannot override display() in Parent

void display() {

^

overridden method is static

1 error

ERROR!

error: compilation failed

0

주무세요

위의 AI 답변에서는 에러가 발생하지 않고 실행 가능하다고 되어 있어서, 그렇게 이해하고 넘어갈 뻔했습니다.

 

하마터면 잘못 이해하고 넘어갈 뻔했네요.

끝까지 답변 잘 달아주셔서 감사드립니다.

0

주말코딩

AI 답변 너무 믿으시면 안됩니다..

-1

인프런 AI 인턴

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

말씀하신 내용은 Java의 메서드 오버로딩 및 오버라이딩과 관련된 중요한 개념들입니다. Java에서 static 메서드와 인스턴스 메서드의 차이점에 대해 설명드리겠습니다.

  1. 업캐스팅에서의 메서드 접근:

    • 업캐스팅 상황에서 static 메서드와 인스턴스 메서드는 다르게 동작합니다. static 메서드는 참조 타입에 따라 호출되며, 실제 객체에 의해 결정되지 않습니다. 따라서 static 메서드가 업캐스팅 시 오버라이딩되는 것이 아니라 숨김(hiding)이 발생합니다.
  2. Child obj = new Child();의 경우:

    • 말한대로 자식 클래스에서 void display()처럼 인스턴스 메서드로 정의하고, 부모 클래스에는 static void display()로 정의되었다면, obj.display()를 호출 시 에러가 발생하지 않습니다.
    • 두 메서드는 static 여부가 다르기 때문에 서로 다른 메서드로 취급됩니다.
    • 부모 클래스의 static 메서드는 오버라이딩이 되지 않으며, 자식의 인스턴스 메서드를 호출하게 됩니다.

따라서, 업캐스팅 여부에 관계없이 static 함수는 상속되는 것이 아니라 메서드 숨김이 발생하며, 각자의 Invoking class 타입에 따라 호출됩니다.

관련된 더 깊이 있는 설명을 확인하고 싶으시다면 아래의 유사한 기존 답변을 참고하시길 바랍니다:

이해가 되셨길 바라며, 질문에 대한 궁금증이 풀리셨기를 바랍니다. 저 역시 질문자님의 이해를 돕기 위해 최선을 다하고 있으며, 현재 베타 기능으로 인해 다소 부족함이 있을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주세요. 지식공유자께서 빠르게 답변을 드릴 것입니다.

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

44

2

26년 1회 실기 해설 강의

0

63

2

53번 4-1 자료 오류 있는 것 같습니다.

0

73

2

7번문제

0

60

2

C언어 변형문제 9번문제 Pdf 수정요청

0

48

2

메서드 오버드라드

0

50

2

실수

0

46

1

공부 우선순위 우선강의 알려주세요

0

88

1

생성자 호출순서 강의 10번 문제 30분대 질문입니다

0

48

2

25년 2회 기출 5:40 질문입니다.

0

42

2

모의고사1회 3번 파이썬문제

0

75

2

C언어 출제변형 6번 문제

0

50

2

c언어 출제변형 강의 질문

0

32

2

28:40

0

33

2

C :  언어 배열과  문자열 수업자료

0

30

2

파이썬 리스트, 딕셔너리 질문

0

42

2

모의고사 관련 질문 건

1

69

3

자료 내용 오류

0

64

2

정적 변수, 정적 메서드(static) v2

0

50

2

v1.2 와 v0.91 PDF

0

103

1

업캐스팅 (부모형태, 자식생성자)

0

51

2

정보처리산업기사 준비중입니다.

0

74

2

실기 D -6

0

105

2

(기출) 2024년 2회 기출문제 - 이론 포함 22분32초 질문입니다

0

58

3