정처기 감자정처기 감자
Java객체지향

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

Java 상속(extends), super, this()와 필드 하이딩

코딩Java
읽는데 9분 소요
처음 쓰인 날: 2026-02-17
마지막 수정일: 2026-03-28
조회수: —
선수학습(2개)
  • 객체와 클래스 - 클래스, 인스턴스, 생성자
  • Java 접근제어자 (public, private, protected, default)

요약

Java 상속(extends)의 개념과 super/this() 키워드, 생성자 체이닝, 필드 하이딩을 알아봅니다. 정보처리기사 실기에 출제된 상속 문제를 풀기 위한 핵심 개념을 정리합니다.

상속 핵심 정리

개념설명예시
상속 (extends)부모 클래스의 필드와 메서드를 물려받음class Square extends Rectangle
super()부모 클래스의 생성자를 호출super(s, s);
생성자 체이닝this() → super() 순서로 생성자가 연결됨Rectangle() → Rectangle(int, int) → 부모 생성자
필드 하이딩부모-자식 같은 이름 필드는 참조 타입 기준ref.x → 참조 변수 타입의 x

상속이란?

상속(Inheritance)은 기존 클래스(부모)의 필드와 메서드를 새로운 클래스(자식)가 물려받는 것입니다.

쉽게 말하면, "부모가 가진 것을 자식이 그대로 사용할 수 있다" 는 뜻입니다.

java
코드 하이라이팅 중…

위 코드에서 Square는 Rectangle을 상속받았기 때문에, 직접 선언하지 않아도 width, height, getArea()를 사용할 수 있습니다.

상속과 함께 메서드 오버라이딩도 출제됩니다
상속받은 메서드를 자식 클래스에서 다시 정의하는 것을 오버라이딩이라고 합니다. Parent ref = new Child() 패턴에서 어떤 메서드가 호출되는지 묻는 문제가 25년 2회에 출제되었습니다. 메서드 오버라이딩 페이지를 참고하세요.
Java 상속 개념
자식 클래스 Square는 부모 클래스 Rectangle의 필드와 메서드를 물려받습니다.

extends 키워드

자식 클래스가 부모 클래스를 상속할 때 extends 키워드를 사용합니다.

java
코드 하이라이팅 중…
extends vs implements
클래스를 상속할 때는 extends, 인터페이스를 구현할 때는 implements를 사용합니다. 이 둘을 혼동하지 않도록 주의하세요.

extends vs implements 비교

키워드사용 대상의미예시
extends클래스 -> 클래스상속 (부모 기능을 물려받음)class Square extends Rectangle
implements클래스 -> 인터페이스구현 (약속한 기능을 만듦)class A implements Person

생성자, this, 기본 생성자에 대해서는 객체와 클래스 페이지를 참고하세요.


super 키워드

super 는 부모 클래스를 가리키는 키워드입니다. super(...) 형태로 괄호와 함께 쓰면 부모 생성자를 호출하고, super.x 형태로 점(.)과 함께 쓰면 부모의 필드나 메서드에 접근합니다. 생성자에서 super()를 호출할 때는 반드시 첫 번째 줄에 위치해야 합니다.

java
코드 하이라이팅 중…

super(s, s)는 부모 클래스인 Rectangle의 생성자 Rectangle(int width, int height)를 호출합니다. s가 width와 height 모두에 전달되므로, 정사각형(가로 = 세로)이 됩니다.

super를 반드시 명시해야 하는 경우

부모 클래스에 기본 생성자(매개변수 없는 생성자)가 없는 경우, 자식 클래스에서 반드시 super를 명시적으로 호출해야 합니다.

java
코드 하이라이팅 중…

super를 생략할 수 있는 경우

부모 클래스에 기본 생성자가 있는 경우, 컴파일러가 자동으로 super()를 호출합니다.

java
코드 하이라이팅 중…

super 정리 표

부모 클래스 상태super 필요 여부이유
생성자 없음 (기본 생성자 자동 생성)생략 가능컴파일러가 super() 자동 호출
기본 생성자 있음생략 가능컴파일러가 super() 자동 호출
매개변수 생성자만 있음반드시 명시기본 생성자가 없어서 자동 호출 불가
시험에서 자주 나오는 패턴
부모 클래스에 매개변수 생성자만 있고 기본 생성자가 없는 경우, 자식 클래스에서 super(...)를 반드시 호출해야 합니다. 이 패턴이 25년 3회에 출제되었습니다.

생성자 체이닝

생성자 체이닝(Constructor Chaining)은 하나의 생성자가 다른 생성자를 호출하고, 그 생성자가 또 다른 생성자를 호출하는 구조입니다. 아래 예제에서는 Rectangle() → this(10, 20) → super("사각형") 순서로 연결됩니다.

java
코드 하이라이팅 중…

실행 순서

new Rectangle()이 호출되면:

순서코드설명
1Rectangle()기본 생성자 진입
2this(10, 20)Rectangle(int, int) 생성자 호출
3super("사각형")Shape(String) 생성자 호출
4this.type = "사각형"Shape의 type 필드에 저장
5this.width = 10Rectangle의 width 필드에 저장
6this.height = 20Rectangle의 height 필드에 저장
text
코드 하이라이팅 중…
생성자 체이닝의 핵심: 부모 생성자가 항상 먼저 실행됩니다
this()로 다른 생성자를 호출하면, 그 생성자에서도 this() 또는 super()를 써야 합니다. this()만 계속 쓸 수는 없으므로(무한 루프), 마지막에는 반드시 super()가 있는 생성자에 도달합니다. 따라서 부모 생성자가 항상 먼저 실행됩니다.

필드 하이딩

부모 클래스와 자식 클래스에 같은 이름의 필드가 있으면, 자식의 필드가 부모의 필드를 가립니다. 이것을 필드 하이딩(Field Hiding)이라고 합니다. 부모의 필드가 사라지는 것이 아니라, 하나의 객체 안에 같은 이름의 필드가 두 개 존재하되, 자식의 필드가 부모의 필드를 가려서 보이지 않게 만드는 것입니다. 가려진 부모의 필드에 접근하려면 super.x를 사용합니다.

java
코드 하이라이팅 중…

필드는 선언 타입 기준

Parent ref = new Child();에서 등호 왼쪽 Parent가 선언 타입이고, 등호 오른쪽 new Child()가 실제 객체의 타입입니다. 필드에 접근할 때는 선언 타입(= 등호 왼쪽) 기준으로 결정됩니다.

java
코드 하이라이팅 중…

같은 Child 객체를 가리키더라도, 선언 타입이 Parent이면 Parent의 x가, 선언 타입이 Child이면 Child의 x가 출력됩니다. 이것은 Java의 규칙이므로 외워두세요.

필드 vs 메서드 호출 기준 비교

메서드 오버라이딩(자식이 부모의 메서드를 재정의하는 것)에서는 실제 객체 타입 기준으로 호출됩니다. 하지만 필드와 static 메서드는 선언 타입 기준입니다.

구분호출 기준예시
인스턴스 메서드 (오버라이딩)실제 객체 타입 (= 등호 오른쪽)ref.method() → Child의 method()
필드 (하이딩)선언 타입 (= 등호 왼쪽)ref.x → Parent의 x
static 메서드선언 타입 (= 등호 왼쪽)ref.id() → Parent의 id()
선언 타입 기준인 것: 필드와 static 메서드
Parent ref = new Child() 패턴에서 실제 객체(Child) 기준으로 호출되는 것은 인스턴스 메서드(static이 붙지 않은 일반 메서드)뿐입니다. 필드와 static 메서드는 선언 타입(Parent) 기준입니다.

왜 이렇게 나뉠까? — 소속이 다르기 때문

이 규칙을 외우는 핵심은 "객체에 소속된 것만 실제 객체를 따른다" 입니다.

  • 인스턴스 메서드: 객체에 소속 → 실행할 때 실제 객체를 확인 → 실제 객체 기준 (오버라이딩 적용)
  • 필드: 클래스에 소속 → 컴파일할 때 선언 타입만 보고 결정 → 선언 타입 기준 (필드 하이딩)
  • static 메서드: 클래스에 소속 → 컴파일할 때 선언 타입만 보고 결정 → 선언 타입 기준

이것을 정적 바인딩1과 동적 바인딩2이라고 부릅니다. "바인딩"은 호출 코드와 실제 실행될 코드를 연결하는 것이고, 언제 연결하느냐의 차이입니다.

구분소속바인딩 시점기준결과
인스턴스 메서드객체실행 시점 (동적)실제 객체오버라이딩 적용
필드클래스컴파일 시점 (정적)선언 타입필드 하이딩
static 메서드클래스컴파일 시점 (정적)선언 타입하이딩

클래스에 소속된 것(필드, static 메서드)은 컴파일할 때 타입만 보면 결정할 수 있고, 객체에 소속된 것(인스턴스 메서드)은 실행해봐야 실제 객체가 뭔지 알 수 있기 때문입니다.


정보처리기사 실기 기출 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

Footnotes

  1. 정적 바인딩(Static Binding): 컴파일 시점에 호출할 코드가 결정되는 것. 코드에 적힌 선언 타입 기준. ↩

  2. 동적 바인딩(Dynamic Binding): 실행 시점에 호출할 코드가 결정되는 것. 실제 생성된 객체 타입 기준. ↩


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(5개)
  • Java 메서드 오버라이딩과 static 메서드
  • Java 추상 클래스(abstract class)와 추상 메서드
  • Java 제네릭과 타입 소거 (Generic & Type Erasure)
  • Java 인터페이스와 implements
  • Java instanceof와 안전한 형변환
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999