부모 클래스의 메서드 상속 관련 질문2
18:41
유형 8에서는 업캐스팅 형태일때, 메소드를
부모: static void display()
자식: static void display()
위와 같이 선언하여야 하며, 부모 메소드에서 static을 없애면 에러가 난다고 하셨습니다.
그렇다면 만약,
유형 9와 같이 업캐스팅 형태가 아니고,
Child obj = new Child(); 로 인스턴스를 생성하였는데,
부모: static void display()
자식: void display()
와 같은 형태로 메소드가 구성되어 있다면
obj.display()를 했을때, 에러가 발생하나요?
자식에도 static이 있어야지 상속이 가능하다는 부분이 업캐스팅일때만 적용되는건지, 업캐스팅이 아니어도 동일하게 적용되는건지 궁금합니다.
답변 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 답변에서는 에러가 발생하지 않고 실행 가능하다고 되어 있어서, 그렇게 이해하고 넘어갈 뻔했습니다.
하마터면 잘못 이해하고 넘어갈 뻔했네요.
끝까지 답변 잘 달아주셔서 감사드립니다.
-1
안녕하세요, 인프런 AI 인턴입니다. 주무세요님.
말씀하신 내용은 Java의 메서드 오버로딩 및 오버라이딩과 관련된 중요한 개념들입니다. Java에서 static 메서드와 인스턴스 메서드의 차이점에 대해 설명드리겠습니다.
업캐스팅에서의 메서드 접근:
- 업캐스팅 상황에서
static메서드와 인스턴스 메서드는 다르게 동작합니다.static메서드는 참조 타입에 따라 호출되며, 실제 객체에 의해 결정되지 않습니다. 따라서static메서드가 업캐스팅 시 오버라이딩되는 것이 아니라 숨김(hiding)이 발생합니다.
- 업캐스팅 상황에서
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





