15. 상속과 추상화

상속과 추상화는 객체지향 프로그래밍의 핵심 개념으로, 코드의 재사용성과 유지보수성을 향상시키는 데에 큰 도움을 줍니다. 상속을 통해 클래스 간의 계층 구조를 형성하고, 추상화를 통해 공통된 특성과 동작을 정의하여 객체의 구조와 동작을 이해하고 설계할 수 있습니다.

1. 상속(Inheritance)

  • 상속은 하나의 클래스가 다른 클래스의 특성을 물려받는 것을 의미합니다.

  • 상속을 통해 클래스 간에 계층 구조를 형성하고, 상위 클래스(부모 클래스 또는 슈퍼 클래스)의 특성을 하위 클래스(자식 클래스 또는 서브 클래스)가 상속받을 수 있습니다.

  • 상속을 받은 하위 클래스는 상위 클래스의 멤버 변수와 메서드를 사용할 수 있으며, 필요에 따라 추가적인 멤버 변수와 메서드를 정의할 수도 있습니다.

  • 상속을 통해 코드의 재사용성을 높이고, 계층 구조를 통해 다형성(Polymorphism)을 구현할 수 있습니다.

예시:

javaCopy codeclass Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

Dog dog = new Dog();
dog.sound();  // 출력: "Dog barks"

2. 추상화(Abstraction)

  • 추상화는 객체의 공통된 특성을 추출하여 클래스로 정의하는 과정입니다.

  • 추상화를 통해 클래스는 객체의 상태와 동작을 표현하고, 필요한 정보와 기능을 캡슐화합니다.

  • 추상화를 통해 클래스는 객체를 실체화하고 구체화할 수 있으며, 객체의 중요한 특성에 집중할 수 있습니다.

  • 추상화는 인터페이스와 추상 클래스를 사용하여 구현됩니다.

예시

javaCopy codeabstract class Shape {
    abstract void draw();
}

class Circle extends Shape {
    void draw() {
        System.out.println("Draw a circle");
    }
}

Circle circle = new Circle();
circle.draw();  // 출력: "Draw a circle"

추상 클래스는 추상 메서드를 포함하며, 인스턴스를 직접 생성할 수 없습니다. 추상 클래스를 상속받은 하위 클래스에서 추상 메서드를 구현해야 합니다. 추상화를 통해 공통된 동작을 정의하고, 다형성을 실현할 수 있습니다.

Last updated