TIL - 20250701

juni·2025년 7월 1일

TIL

목록 보기
53/317

📘 자바 학습 정리 - 상속, 오버로딩, 접근 제어자, 다형성 (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)

  • 정의: 같은 이름의 메서드를 다양한 파라미터 형태로 여러 개 정의
  • 조건:
    1. 파라미터의 타입이 달라야 함
    2. 파라미터의 순서가 달라야 함
    3. 파라미터의 개수가 달라야 함
    4. 리턴타입은 오버로딩 조건에 영향 없음

🔹 예시

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동일 패키지 + 자식 클래스에서 접근 허용
다형성부모 타입으로 자식 객체 다루며 코드 유연성 확보

0개의 댓글