상속(Inheritance)

  • 다른 클래스의 속성과 메서드를 재정의하거나 확장하여 코드 재사용성과 유지보수 편의성을 향상시키는 것

  • 부모 클래스와 자식 클래스 간에는 강한 결합 관계가 형성되기 때문에, 부모 클래스의 변경이 자식 클래스에 영향을 미칠 수 있습니다. 따라서 상속을 사용하기 전에 클래스 간의 관계를 신중히 고려해야 하며, 경우에 따라 구성(Composition)이나 인터페이스를 통한 구현이 더 적절할 수 있습니다.

  • 자바는 단일 상속만을 지원하기 때문에, 여러 클래스로부터 상속받을 수 없습니다.

주요 특징

  1. 코드 재사용: 상속을 통해 기존 클래스(부모 클래스 또는 슈퍼 클래스라고 함)의 속성과 메서드를 새로운 클래스(자식 클래스 또는 서브 클래스라고 함)에서 재사용할 수 있습니다. 이를 통해 중복 코드를 줄일 수 있습니다.
  2. 확장성: 자식 클래스는 부모 클래스의 기능을 확장할 수 있습니다. 부모 클래스에 정의된 메서드를 자식 클래스에서 오버라이드(재정의)하거나, 새로운 메서드와 속성을 추가할 수 있습니다.
  3. 다형성 지원: 상속은 다형성(Polymorphism)의 기초가 됩니다. 부모 클래스 타입의 참조 변수가 자식 클래스의 인스턴스를 참조할 수 있으며, 이를 통해 다양한 형태의 객체를 동일한 인터페이스로 다룰 수 있습니다.

예시

// 부모 클래스
class Vehicle {
    public void move() {
        System.out.println("Vehicle is moving");
    }
}

// 자식 클래스
class Car extends Vehicle {
    @Override
    public void move() {
        System.out.println("Car is moving");
    }
}

public class Test {
    public static void main(String[] args) {
        Vehicle myCar = new Car();
        myCar.move(); // 출력: "Car is moving"
    }
}

정리

  • 상속은 다른 클래스의 속성과 메서드를 재정의하거나 확장하여 코드의 재사용성과 유지보수 편의성을 향상시키는 객체 지향 프로그래밍의 강력한 기능입니다. 하지만 부모 클래스와 자식 클래스 간의 강한 결합 관계를 형성하여, 부모 클래스의 변경이 자식 클래스에 의도하지 않은 변경을 일으킬 위험이 있습니다. 그러므로 클래스 간의 관계를 고려하여 상속 대신 구성(Composition)이나 인터페이스를 통한 구현을 고려할 수 있습니다.

참고

  • ChatGPT-4.0

보완/복습

  • 2023.11.23 생성