본문으로 건너뛰기
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 -version과 javac -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강. 상속과 오버라이딩: 공통 기능을 재사용하는 방법 미완료 상태