본문으로 건너뛰기
Java 기초집LESSON 14

상속과 오버라이딩: 공통 기능을 재사용하는 방법

난이도입문 → 초급
예상 시간35분
선수지식이전 강의

14강. 상속과 오버라이딩: 공통 기능을 재사용하는 방법

1. 이번 강의에서 해결할 문제

코드 몇 줄을 재사용하려고 무조건 상속하면 하위 클래스가 필요 없는 부모 상태와 결합됩니다. 개념적 관계와 치환 가능성을 먼저 확인해야 합니다.

2. 학습 목표

3. 핵심 개념

하위 클래스는 상위 클래스의 공개 계약을 지켜 어디서든 대신 사용할 수 있어야 합니다. super(...)는 부모 생성자를 호출하고 @Override는 메서드 서명 실수를 컴파일러가 확인하게 합니다. 단순 기능 재사용은 필드로 다른 객체를 보유하는 조합이 더 유연할 수 있습니다.

4. 단계별 실습

1. src/InheritanceDemo.java 작성

실행 환경: 코드 편집기

실행 위치: C:\dev\game-records

실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.

대상 파일: src/InheritanceDemo.java

src/InheritanceDemo.java
class GameRecord {
private final String playerName;
private final int score;
GameRecord(String playerName, int score) { this.playerName = playerName; this.score = score; }
String summary() { return playerName + " | " + score + "점"; }
int score() { return score; }
}

class RankedRecord extends GameRecord {
private final int rankChange;
RankedRecord(String playerName, int score, int rankChange) {
super(playerName, score);
this.rankChange = rankChange;
}
@Override String summary() { return super.summary() + " | 랭크 " + (rankChange >= 0 ? "+" : "") + rankChange; }
}

public class InheritanceDemo {
public static void main(String[] args) {
GameRecord record = new RankedRecord("Alice", 1400, 18);
System.out.println(record.summary());
}
}

2. PowerShell에서 컴파일·실행

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-records

실행 전 확인: java -versionjavac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.

대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일

Windows PowerShell
Set-Location C:\dev\game-records
javac -d out .\src\InheritanceDemo.java
java -cp out InheritanceDemo

예상 결과: GameRecord 참조가 RankedRecord 객체의 오버라이드된 요약을 호출합니다.

5. 코드가 동작하는 이유

변수 타입은 GameRecord지만 실제 객체는 RankedRecord이므로 런타임 다형성으로 하위 구현이 호출됩니다. super.summary는 공통 표현을 재사용합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

상속과 오버라이딩: 공통 기능을 재사용하는 방법 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“상속과 오버라이딩: 공통 기능을 재사용하는 방법”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“상속과 오버라이딩: 공통 기능을 재사용하는 방법” 실습 중 ‘private 부모 필드에 직접 접근하기’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

14강. 상속과 오버라이딩: 공통 기능을 재사용하는 방법 미완료 상태