-- 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 메서드를 구현해야 합니다
추상 클래스의 활용
- 일관성 있는 디자인 구현: 여러 하위 클래스에서 동일한 메서드 시그니처를 유지하면서 각 클래스마다 다르게 구현할 수 있습니다
- 다형성 구현: 추상 클래스를 상속받아 각자 다르게 구현된 메서드를 통해 다형성을 구현할 수 있습니다
- 강제성 부여: 하위 클래스에서 반드시 구현해야 하는 메서드를 정의함으로써, 해당 메서드의 누락을 방지하고 안정성을 확보할 수 있습니다
추상 클래스와 인터페이스의 차이
Java에서는 인터페이스 역시 추상 메서드를 가질 수 있습니다
그러나 추상 클래스와 인터페이스의 큰 차이점 중 하나는 다중 상속을 지원하는지 여부입니다
추상 클래스는 단일 상속만을 허용하지만, 인터페이스는 다중 상속을 허용합니다
다중 상속이란, 자식 클래스가 둘 이상의 부모를 가지는 것을 의미합니다
interface Drawable {
void draw();
}
class Circle implements Drawable {
void draw() {
System.out.println("원을 그립니다.");
}
}
class Square implements Drawable {
void draw() {
System.out.println("사각형을 그립니다.");
}
}
마무리
추상 메서드는 객체 지향 프로그래밍에서 클래스의 일관성을 유지하고, 다형성을 활용하기 위한 강력한 도구입니다
추상 클래스와 인터페이스를 통해 프로그램의 설계를 유연하게 할 수 있으며, 코드의 채사용성과 유지보수성을 향상시킬 수 있습니다
Java에서는 이러한 추상 메서드를 통해 높은 수준의 객체 지향 프로그래밍을 구현할 수 있습니다