JAVA

Inheritance

lshjju 2025. 10. 9. 21:57

자바 객체지향 프로그래밍(OOP)의 핵심 기둥 중 하나인 **상속(Inheritance)**에 대해 알아보겠습니다.

상속은 기존의 클래스를 재사용하여 새로운 클래스를 만드는 기술로, 코드의 중복을 줄이고 계층적인 구조를 설계할 때 필수적입니다.


📘 상속(Inheritance): "부모의 유산을 물려받는 기술"

1. 상속이란?

  • 설명: 새로운 클래스를 만들 때 이미 잘 만들어진 클래스의 필드(변수)와 메서드를 그대로 물려받는 것입니다.
  • 용어: 물려주는 클래스를 부모 클래스(Parent/Super Class), 물려받는 클래스를 **자식 클래스(Child/Sub Class)**라고 부릅니다.
  • 키워드: extends를 사용하여 상속을 표현합니다.

2. 상속의 특징

  • 코드 재사용: 부모 클래스에 한 번만 작성하면 모든 자식 클래스에서 가져다 쓸 수 있어 중복이 사라집니다.
  • 단일 상속: 자바는 클래스 간의 다중 상속을 허용하지 않습니다. (부모는 오직 한 명만 가질 수 있습니다.)
  • private 제외: 부모의 필드나 메서드가 private으로 선언되어 있으면 자식이 직접 접근할 수 없습니다.

3. 상속의 기본 예제

어떻게 부모의 기능을 내 것처럼 쓰는지 코드로 확인해 보겠습니다.

Java
 
// 부모 클래스: 공통 특성
class Phone {
    String model;
    String color;

    void bell() { System.out.println("벨이 울립니다."); }
    void sendVoice(String message) { System.out.println("나: " + message); }
    void receiveVoice(String message) { System.out.println("상대방: " + message); }
}

// 자식 클래스: 특화된 기능 추가
class SmartPhone extends Phone {
    void internet() { System.out.println("인터넷에 연결합니다."); }
}

public class InheritanceExample {
    public static void main(String[] args) {
        SmartPhone myPhone = new SmartPhone();

        // 부모에게서 물려받은 필드와 메서드 사용
        myPhone.model = "Galaxy S26";
        myPhone.color = "Black";
        myPhone.bell();

        // 자식만의 고유 기능 사용
        myPhone.internet();
    }
}

4. 메서드 오버라이딩 (Method Overriding)

부모에게서 물려받은 메서드가 자식 클래스에게 맞지 않을 때, 자식이 내용을 재정의하여 사용하는 것입니다.

Java
 
class Calculator {
    double areaCircle(double r) {
        System.out.println("부모 계산기 실행");
        return 3.14159 * r * r;
    }
}

class Computer extends Calculator {
    @Override // 재정의되었음을 나타내는 어노테이션
    double areaCircle(double r) {
        System.out.println("자식 계산기(정밀) 실행");
        return Math.PI * r * r;
    }
}

👨‍🏫 쉽게 이해하는 핵심 포인트

  1. super 키워드: 자식 클래스 내부에서 부모 객체에 접근하고 싶을 때 사용합니다. (예: super.method())
  2. 생성자의 비밀: 자식 객체를 생성하면 내부적으로 부모 객체의 생성자가 먼저 호출됩니다.
  3. IS-A 관계: 상속은 "~은 ~이다" 관계가 성립할 때만 사용하는 것이 좋습니다. (예: 스마트폰은 전화기이다.)

오늘의 요약

  • 상속은 부모의 코드를 자식이 그대로 물려받아 재사용하는 것이다.
  • extends 키워드를 사용하며, 부모는 단 하나만 가질 수 있다.
  • 오버라이딩을 통해 부모의 기능을 자식에 맞게 업그레이드할 수 있다.

자바의 생산성을 극대화해 주는 상속의 개념을 마스터하셨습니다!


'JAVA' 카테고리의 다른 글

Exception class  (0) 2025.11.05
Promotion  (0) 2025.10.20
Exception handing  (0) 2025.10.08
JAVA Comments  (2) 2025.08.27
JVM  (0) 2025.08.27