강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của allan09114077
allan09114077

câu hỏi đã được viết

(2026) Đỗ kỳ thi Kỹ sư Xử lý Thông tin phần thực hành chỉ trong một tuần

Hiding (Phương thức tĩnh, Biến thành viên) v2

hiding 질문

Đã giải quyết

Viết

·

27

0

하이딩과 static, 상속 관련해서 질문이 있습니다.

일반적인 상속 상황을 가정할 때

  1. 부모, 자식에게 둘 다 있는 메서드(즉, 오버라이딩): 자식꺼 사용

  2. 부모, 자식에게 둘 다 있는 static 메서드: 부모꺼 사용

  3. 부모, 자식에게 둘 다 있는 변수: 객체의 자료형(Parent p = new Child();의 경우 Parent의 변수 사용, Child c = mew Child();의 경우 Child의 변수 사용)에 맞는 변수 사용

이 맞을까요?

pythonjavac정보처리기사

Câu trả lời 2

0

weekendcode님의 프로필 이미지
weekendcode
Người chia sẻ kiến thức

안녕하세요, 주말에 학습하시느라 고생이 많으십니다.

부분적으로 맞기도 한데 어떤 것은 좀 애매하게 말씀하셔서 약간 수정해서 말씀드립니다.


1번의 경우 말씀하시는 것이 맞습니다. 특별히 정정해드릴 부분이 없네요.

 

2번이 문제인데, 이 경우에는 정확히 말하자면 "선언된 타입"을 따라가는 것이 맞습니다.

물론 우리는 항상 Parent로 선언하니까 표면적으로는 말씀하시는 것이 맞으나,

혹시 문제에서 더 상위 체인인 클래스로 GrandParent가 나오면... 답 없죠.

선언된 타입을 따라가셔야 합니다.

Parent p = new Child();
p.staticMethod(); // → Parent의 static 메서드

Child c = new Child();
c.staticMethod(); // → Child의 static 메서드

 

3번은 가까운 변수를 쓰는 것이 맞으나, 외부에서 변수가 오는 경우에는 this. 혹은 super.가 붙어있는지 잘 보셔야 합니다.

명시적으로 부모의 변수나 현재 객체의 인스턴스 변수를 사용하기 때문에 그렇습니다.

 

단순히 변수의 필드 하이딩을 말씀하시는 것이면 맞습니다.

Parent p = new Child(); // → Parent의 변수
Child c = new Child();  // → Child의 변수

 

변수는 넘어가지 않고, 그대로 하이딩합니다.

 

 

 

0

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

자바에서 상속과 관련된 하이딩(hiding) 및 오버라이딩(overriding)에 대한 질문을 주셨네요. 먼저 각 상황에 대한 설명과 함께 답을 드리겠습니다.

1. 부모, 자식에게 둘 다 있는 메서드(오버라이딩)

오버라이딩 된 메서드의 경우, 실제 객체의 클래스에 따라 메서드가 결정됩니다. 따라서 Parent p = new Child();의 경우, 자식 클래스의 오버라이딩 된 메서드가 호출됩니다. 이는 자바의 다형성(polymorphism) 때문입니다.

2. 부모, 자식에게 둘 다 있는 static 메서드

Static 메서드는 클래스 레벨에서 호출되며, 객체 인스턴스가 아닌 클래스 타입으로 결정됩니다. 따라서 Parent p = new Child();의 경우 부모 클래스의 static 메서드가 호출됩니다. 이는 오버라이딩이 아닌 하이딩(hiding)에 해당합니다.

3. 부모, 자식에게 둘 다 있는 변수

변수의 경우, 참조 변수의 선언된 타입에 따라 사용됩니다. 따라서 Parent p = new Child();로 사용하면 부모 클래스의 변수가, Child c = new Child();로 사용하면 자식 클래스의 변수가 호출됩니다.

위의 설명을 기반으로 이해에 도움될 수 있는 추가 링크입니다:
- 자바 상속과 메소드 오버라이딩 이해하기
- 자바에서 메소드와 변수 하이딩 차이점

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

Hình ảnh hồ sơ của allan09114077
allan09114077

câu hỏi đã được viết

Đặt câu hỏi