[java] 자바 추상 클래스와 인터페이스의 상속 구조를 정리한 다이어그램
자바에서 추상 클래스와 인터페이스는 객체 지향 프로그래밍의 중요한 요소입니다. 추상 클래스는 일반 클래스와 추상 메서드를 모두 포함할 수 있으며, 인터페이스는 추상 메서드만을 포함합니다. 이들의 상속 구조는 다음과 같이 설명할 수 있습니다.
추상 클래스 (Abstract Class)
추상 클래스는 abstract
키워드로 선언되며, extends
키워드로 다른 추상 클래스나 일반 클래스를 상속할 수 있습니다. 추상 클래스는 다음과 같은 특징을 가집니다:
- 추상 클래스는 인스턴스화할 수 없습니다. 즉, 직접 객체를 생성할 수 없습니다.
- 추상 클래스는 추상 메서드를 가질 수 있고, 추상 메서드는 구현되지 않은 메서드입니다.
- 추상 클래스는 추상 메서드 외에도 일반적인 메서드, 필드 및 생성자를 포함할 수 있습니다.
- 하위 클래스에서는 추상 메서드들을 구현해야 합니다.
아래는 추상 클래스 상속 구조의 예시입니다:
abstract class Animal {
abstract void makeSound();
}
abstract class Mammal extends Animal {
abstract void eat();
}
class Dog extends Mammal {
void makeSound() {
System.out.println("Woof!");
}
void eat() {
System.out.println("Eating bones");
}
}
인터페이스 (Interface)
인터페이스는 interface
키워드로 선언되며, extends
키워드로 다른 인터페이스를 상속할 수 있습니다. 인터페이스는 다음과 같은 특징을 가집니다:
- 인터페이스는 멤버 변수, 추상 메서드, 상수만을 가질 수 있습니다.
- 인터페이스는 다중 상속을 지원합니다. 즉, 여러 개의 인터페이스를 동시에 상속받을 수 있습니다.
- 인터페이스는 구현되지 않은 추상 메서드를 가지고 있으므로, 하위 클래스에서 반드시 구현되어야 합니다.
아래는 인터페이스 상속 구조의 예시입니다:
interface Animal {
void makeSound();
}
interface Mammal extends Animal {
void eat();
}
class Dog implements Mammal {
void makeSound() {
System.out.println("Woof!");
}
void eat() {
System.out.println("Eating bones");
}
}
추상 클래스와 인터페이스 상속 구조 다이어그램
아래는 자바 추상 클래스와 인터페이스의 상속 구조를 시각적으로 나타낸 다이어그램입니다:
결론
자바에서 추상 클래스와 인터페이스는 상속 구조를 통해 코드의 재사용성과 유연성을 높일 수 있는 중요한 개념입니다. 추상 클래스는 일반 클래스와 추상 메서드를 포함하고, 인터페이스는 추상 메서드만을 포함하며 다중 상속을 지원합니다. 이를 적절히 활용하면 객체 지향 프로그래밍에서 더욱 강력하고 유연한 코드를 작성할 수 있습니다.
참고: Oracle, “The Java Tutorials - Abstract Methods and Classes” (https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html)