-- Language --/Java

[JAVA] 추상 클래스와 추상 메서드의 이해와 활용

JunKang 2023. 12. 8. 14:59

안녕하세요!

이번 글에서는 Java의 추상 메서드에 대해 알아보겠습니다

추상 메서드는 객체지향 프로그래밍의 중요한 개념 중 하나로, 클래스를 설계하고 확장하는 데에 있어서 유용하게 활용됩니다

그럼 알아보도록 하겠습니다

 

추상 메서드란?

추상 메서드는 선언만 있고 본문이 없는 메서드입니다

이 메서드를 가진 클래스를 추상 클래스라고 부르며, 추상 클래스는 직접 객체를 생성할 수 없습니다

대신, 이 추상 클래스를 상속받은 하위 클래스에서 추상 메서드를 반드시 구현해야 객체를 생성할 수 있습니다

이를 통해 메서드의 일관성을 유지하고, 다형성을 구현할 수 있습니다

 

abstract class Shape {
    abstract void draw();
}

class Circle extends Shape {
    void draw() {
        System.out.println("원을 그립니다.");
    }
}

class Square extends Shape {
    void draw() {
        System.out.println("사각형을 그립니다.");
    }
}

 

위의 예제에서 Shape 클래스는 추상 메서드 draw를 가지고 있습니다

이 클래스를 상속받은 Circle과 Square 클래스에서는 반드시 draw 메서드를 구현해야 합니다

 

추상 클래스의 활용

  1. 일관성 있는 디자인 구현: 여러 하위 클래스에서 동일한 메서드 시그니처를 유지하면서 각 클래스마다 다르게 구현할 수 있습니다
  2. 다형성 구현: 추상 클래스를 상속받아 각자 다르게 구현된 메서드를 통해 다형성을 구현할 수 있습니다
  3. 강제성 부여: 하위 클래스에서 반드시 구현해야 하는 메서드를 정의함으로써, 해당 메서드의 누락을 방지하고 안정성을 확보할 수 있습니다

 

추상 클래스와 인터페이스의 차이

Java에서는 인터페이스 역시 추상 메서드를 가질 수 있습니다

그러나 추상 클래스와 인터페이스의 큰 차이점 중 하나는 다중 상속을 지원하는지 여부입니다

추상 클래스는 단일 상속만을 허용하지만, 인터페이스는 다중 상속을 허용합니다

다중 상속이란, 자식 클래스가 둘 이상의 부모를 가지는 것을 의미합니다

 

interface Drawable {
    void draw();
}

class Circle implements Drawable {
    void draw() {
        System.out.println("원을 그립니다.");
    }
}

class Square implements Drawable {
    void draw() {
        System.out.println("사각형을 그립니다.");
    }
}

 

마무리

추상 메서드는 객체 지향 프로그래밍에서 클래스의 일관성을 유지하고, 다형성을 활용하기 위한 강력한 도구입니다

추상 클래스와 인터페이스를 통해 프로그램의 설계를 유연하게 할 수 있으며, 코드의 채사용성과 유지보수성을 향상시킬 수 있습니다

Java에서는 이러한 추상 메서드를 통해 높은 수준의 객체 지향 프로그래밍을 구현할 수 있습니다