Java 상속(extends)과 super 키워드

코딩Java
읽는데 7분 소요
처음 쓰여진 날: 2026-02-17
마지막 수정일: 2026-02-17
조회수: 6

요약

Java 상속(extends)의 개념과 super 키워드 사용법을 알아봅니다. 정보처리기사 실기에 출제된 상속 문제를 풀기 위한 핵심 개념을 정리합니다.

상속 핵심 정리

개념설명예시
상속 (extends)부모 클래스의 필드와 메서드를 물려받음class Square extends Rectangle
super부모 클래스의 생성자를 호출super(s, s);
this현재 객체 자신을 가리킴this.width = width;
기본 생성자매개변수 없는 생성자Rectangle() { }

상속이란?

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

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

java
코드 하이라이팅 중...

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

Java 상속 개념
자식 클래스 Square는 부모 클래스 Rectangle의 필드와 메서드를 물려받습니다.

extends 키워드

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

java
코드 하이라이팅 중...

extends vs implements 비교

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


this 키워드

this 는 현재 객체 자신을 가리키는 키워드입니다. 주로 매개변수와 필드 이름이 같을 때 구분하기 위해 사용합니다.

  • 필드(field): 클래스 안에 선언된 변수로, 객체의 데이터를 저장합니다. 아래 코드에서 int width, height;가 필드입니다.
  • 매개변수(parameter): 메서드나 생성자를 호출할 때 전달받는 값입니다. 아래 코드에서 Rectangle(int width, int height)width, height가 매개변수입니다.

이 두 이름이 같으면 Java는 가까운 쪽(매개변수)을 우선 인식하기 때문에, 필드를 가리키려면 this.를 붙여야 합니다.

java
코드 하이라이팅 중...
표현의미
this.width현재 객체의 필드 width
width매개변수 width

this를 사용하지 않으면 매개변수 width와 필드 width를 구분할 수 없어서, 매개변수의 값이 필드에 저장되지 않습니다.


생성자란?

생성자(Constructor) 는 객체가 생성될 때 자동으로 호출되는 특별한 메서드입니다. 클래스 이름과 동일하고, 반환 타입이 없습니다.

java
코드 하이라이팅 중...

기본 생성자

기본 생성자 는 매개변수가 없는 생성자입니다. 클래스에 생성자를 하나도 작성하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어줍니다.

java
코드 하이라이팅 중...
java
코드 하이라이팅 중...

super 키워드

super 는 부모 클래스의 생성자를 호출하는 키워드입니다. 자식 클래스의 생성자에서 반드시 첫 번째 줄에 위치해야 합니다.

java
코드 하이라이팅 중...

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

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

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

java
코드 하이라이팅 중...

super를 생략할 수 있는 경우

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

java
코드 하이라이팅 중...

super 정리 표

부모 클래스 상태super 필요 여부이유
생성자 없음 (기본 생성자 자동 생성)생략 가능컴파일러가 super() 자동 호출
기본 생성자 있음생략 가능컴파일러가 super() 자동 호출
매개변수 생성자만 있음반드시 명시기본 생성자가 없어서 자동 호출 불가

실전 예제: Rectangle과 Square

이 예제는 25년 3회 기출문제와 동일한 구조입니다.

java
코드 하이라이팅 중...

실행 순서 추적

순서코드설명
1new Square(10)Square 생성자 호출 (s = 10)
2super(10, 10)Rectangle 생성자 호출 (width = 10, height = 10)
3this.width = 10Rectangle의 width에 10 저장
4this.height = 10Rectangle의 height에 10 저장
5sq.getArea()부모의 getArea() 호출: 10 * 10 = 100

SquareRectangle을 상속받았기 때문에 getArea() 메서드를 직접 선언하지 않아도 사용할 수 있습니다.


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