자바/객체 지향 프로그래밍

상속(Inheritance)과 코드 재사용 - 자바 객체지향 설계의 핵심

끄적인다 2025. 4. 27. 23:34
반응형

자바에서 *상속(Inheritance)*은 객체지향 프로그래밍의 핵심 개념 중 하나로, 기존 클래스를 확장하여 코드를 재사용하고 유지보수성을 높이는 데 매우 유용합니다. 이번 글에서는 상속의 개념, 장점, 문법, 그리고 실전 예제를 통해 상속을 제대로 이해해봅니다.


🌱 1. 상속이란?

상속은 기존 클래스를 기반으로 새로운 클래스를 정의하는 방식입니다. 부모 클래스(슈퍼클래스)의 필드와 메서드를 자식 클래스(서브클래스)가 물려받아 사용할 수 있습니다.

class Animal {
    void eat() {
        System.out.println("먹는다");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("짖는다");
    }
}

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();  // 상속받은 메서드
        dog.bark(); // 자식 메서드
    }
}

Dog 클래스는 Animal 클래스를 extends 키워드로 상속받습니다.


♻️ 2. 상속의 장점

상속을 통해 얻을 수 있는 대표적인 이점은 다음과 같습니다:

✅ 코드 재사용

  • 이미 구현된 기능을 자식 클래스가 재사용할 수 있음
  • 중복 코드 제거 → 유지보수 용이

✅ 기능 확장

  • 자식 클래스에서 필요한 기능을 추가로 구현 가능
  • 기존 기능을 그대로 두고, 추가 기능을 덧붙이는 구조로 확장

✅ 다형성(Polymorphism)의 기반

  • 상속을 통해 자식 객체를 부모 타입으로 다룰 수 있음
  • 인터페이스, 추상 클래스와 함께 사용 시 강력한 확장성 확보

🛠️ 3. 상속의 기본 문법

class 부모클래스명 {
    // 필드와 메서드
}

class 자식클래스명 extends 부모클래스명 {
    // 추가 필드와 메서드
}

자바는 단일 상속만 지원합니다. (즉, 한 번에 하나의 클래스만 상속 가능)


🧩 4. 상속의 실전 예시

class Person {
    String name;
    int age;

    void introduce() {
        System.out.println("이름: " + name + ", 나이: " + age);
    }
}

class Student extends Person {
    String major;

    void study() {
        System.out.println(major + "를 공부합니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Student s = new Student();
        s.name = "영희";
        s.age = 20;
        s.major = "컴퓨터공학";
        s.introduce();
        s.study();
    }
}

Student 클래스는 Person 클래스를 상속받아 이름, 나이 필드를 그대로 사용하면서 major 필드와 study() 메서드를 추가로 정의합니다.


🧠 5. 상속 시 주의할 점

항목설명

단일 상속 자바는 하나의 클래스만 상속 가능 (다중 상속 불가)
생성자 상속 불가 부모 생성자는 자식 클래스에 상속되지 않음. super()로 호출 필요
오버라이딩 가능 부모 메서드를 자식 클래스에서 재정의할 수 있음
접근 제어자 제한 private 멤버는 상속되지만 접근은 불가능

✅ 정리 요약

개념 설명
상속 부모 클래스의 속성과 메서드를 자식 클래스가 물려받음
장점 코드 재사용, 기능 확장, 다형성 지원
사용법 class 자식 extends 부모 {} 형태
주의점 단일 상속, 생성자 미상속, 접근 제한 고려 필요

🚀 마무리

상속은 자바에서 객체 지향 프로그래밍을 효과적으로 구현하기 위한 핵심 도구입니다. 코드 중복을 줄이고, 유연한 구조로 확장성을 높이기 위해 반드시 숙지해야 할 개념입니다. 다음에는 상속과 함께 자주 사용되는 오버라이딩, 추상 클래스, 인터페이스 등도 함께 공부해보세요!

반응형