📘 자바 학습 정리 - 상속, 오버로딩, 접근 제어자, 다형성 (0701)
1. 상속 (Inheritance)
- 상속이란?
- 부모 클래스의 필드와 메서드를 자식 클래스가 물려받아 사용하는 것.
- 코드 재사용성 향상과 유지보수 효율 증가.
IS-A 관계: 전사(Warrior)는 플레이어(Player)다.
🔹 예시 구조
class Player { ... }
class Warrior extends Player { ... }
class Mage extends Player { ... }
class Hunter extends Player { ... }
- 공통 멤버는
Player에 정의
- 각 클래스마다 추가 능력치 (
rage, mana, concentrate) 존재
showStatus() 메서드를 오버라이딩(Override)해서 각 클래스마다 다르게 동작
2. 메서드 오버로딩 (Method Overloading)
- 정의: 같은 이름의 메서드를 다양한 파라미터 형태로 여러 개 정의
- 조건:
- 파라미터의 타입이 달라야 함
- 파라미터의 순서가 달라야 함
- 파라미터의 개수가 달라야 함
- 리턴타입은 오버로딩 조건에 영향 없음
🔹 예시
void add() {}
void add(int x) {}
void add(int x, double y) {}
3. protected 접근제어자
- protected: 같은 패키지 또는 상속관계의 자식 클래스에서만 접근 가능
default와 비슷하지만 상속 관계에서는 접근 허용됨
🔹 예시
class A {
protected int x;
}
class D extends A {
void method() {
this.x = 10;
}
}
- 같은 패키지 B에서는 접근 가능하지만, 다른 패키지의 일반 클래스 C는 접근 불가
- 다른 패키지의 자식 클래스 D는 생성자 내부에서만 접근 가능
4. 다형성 (Polymorphism)
- 정의: 부모 타입으로 자식 객체를 다룰 수 있는 특성
- 실행 시점에 어떤 자식 클래스가 동작할지 결정됨
🔹 객체 배열 활용 예
Car[] cars = { new Tesla(), new Mustang(), new Sonata() };
for (Car car : cars) {
car.accelerate();
}
- 다형성을 활용하면
Computer 클래스가 Keyboard 인터페이스 또는 상위 클래스를 통해 다양한 키보드 객체를 다룰 수 있음
✅ 정리 요약
| 개념 | 설명 |
|---|
| 상속 | 코드 재사용, IS-A 관계, 부모 기능 자식이 물려받음 |
| 오버로딩 | 같은 이름의 메서드를 파라미터 형태로 구분 |
| protected | 동일 패키지 + 자식 클래스에서 접근 허용 |
| 다형성 | 부모 타입으로 자식 객체 다루며 코드 유연성 확보 |