이 글에서는 자바(Java)에서 다중 상속(Multiple Inheritance)을 구현하는 방법을 살펴보겠습니다. 자바는 기본적으로 다중 상속을 지원하지 않습니다. 즉, 하나의 클래스가 두 개 이상의 클래스를 동시에 확장(extends)할 수 없습니다. 하지만 'extends' 키워드를 활용한 다단계 상속이나 인터페이스(interface)를 사용하면 다중 상속과 유사한 결과를 얻을 수 있습니다.
알고리즘
1단계 – 시작
2단계 – Server, Connection, My_Test 세 개의 클래스를 선언합니다.
3단계 – 'extends' 키워드를 사용하여 클래스 간의 상속 관계를 설정합니다.
4단계 – main 함수에서 각 클래스의 객체를 생성하고 호출합니다.
5단계 – 종료
예제 1: extends 키워드를 활용한 다단계 상속
class Server{
void my_frontend(){
System.out.println("Connection to frontend established successfully");}
}
class Java extends Server{
void my_backend(){
System.out.println("Connection to backend established successfully");
}
}
class connection extends Java{
void my_database(){
System.out.println("Connection to database established successfully");
}
}
public class my_test{
public static void main(String args[]){
connection my_connection=new connection();
my_connection.my_database();
my_connection.my_backend();
my_connection.my_frontend();
}
}출력 결과
Connection to database established successfully
Connection to backend established successfully
Connection to frontend established successfully
위 예제에서는 Server → Java → Connection 순서로 클래스를 연결하는 다단계 상속(multilevel inheritance)을 구현했습니다. 이를 통해 최하위 클래스의 객체 하나만으로 상위 클래스들이 가진 모든 메서드를 호출할 수 있습니다.
예제 2: 인터페이스를 활용한 다중 상속
interface My_restaurents {
void eat();
}
interface My_journey {
void travel();
}
class Holiday implements My_restaurents, My_journey {
public void eat() {
System.out.println("I am trying this food");
}
public void travel() {
System.out.println("I am trying this route");
}
}
public class My_trip {
public static void main(String args[]) {
Holiday my_schedule = new Holiday();
my_schedule.eat();
my_schedule.travel();
}
}출력 결과
I am trying this food
I am trying this route
두 번째 예제에서는 하나의 클래스가 두 개의 인터페이스를 동시에 구현(implements)함으로써 다중 상속의 효과를 얻었습니다. 자바에서 다중 상속이 필요한 경우, 클래스의 직접적인 다중 확장은 허용되지 않기 때문에 인터페이스를 활용하는 방식이 가장 권장되는 접근법입니다. 이를 통해 코드의 유연성과 재사용성을 높일 수 있습니다.