인프런 커뮤니티 질문&답변

깨위님의 프로필 이미지
깨위

작성한 질문수

자바 : 클래스의 이해와 객체지향 프로그래밍

인터페이스의 다중상속

작성

·

621

0

안녕하세요!

강의 잘 듣고 있습니다.

추상 클래스와 인터페이스의 사용 구분을 조금 더 명확히 하고 싶어 구글링을 하다보니,

클래스 상속에서 "다중 상속의 모호성" 때문에 자바에서 다중 상속을 막고 있다는 글을 보게 됐습니다.

여기서 말하는 "다중 상속의 모호성"이란 아래와 같이 car, plane의 클래스에 모두 drive()메서드가 구현돼어 있을 경우 어떤 클래스의 drive를 호출할지 모호하다는 것 입니다.!

class MyVehicle extends car, plane{
	@OVerride
	public void goTo(){
		super.drive();
}

출처 : https://brunch.co.kr/@kd4/6

 

그러면 인터페이스를 다중 상속을 하게 되면, 이러한 문제는 해결이 되는지 궁굼합니다..

 

아래와 같이 두개의 인터페이스가 존재할 때,

interface car {
     void goTo(){}
}

 

interface plane{
     void goTo()
}

 

class MyVehicle implements car, plane{
	@OVerride
	public void goTo(){
		
}

car과 plane을 상속 받을 경우 , car의 추상메서드인 goTo, plane의 추상메서드인 goTo둘다 구현을 해야할텐데, MyVehicle에서 goTo를 하나만 구현해도, 괜찮은건가요?

아니면 다른 방법이 있는지 궁굼합니다.

 

현재 인텔리제이로 코드를 쳐보니, 두개의 클래스 둘다 구현이 완료돼서 문제가 없는 것으로 나오는데, 이유가 무엇인가요?

interface plane{
    void goTo();
}

interface car {
    void goTo();
}

public class MyVehicle implements car, plane{

    @Override
    public void goTo() {
        System.out.println("구현했따우");
    }

    public static void main(String[] args) {
        MyVehicle my = new MyVehicle();
        my.goTo();
    }
}

스크린샷 2023-01-21 오후 4.14.47.png

 

아래는 car, plane클래스 모두 goTo가 구현이 됐다고 표기되는 모습입니다.

스크린샷 2023-01-21 오후 4.15.36.png

감사합니다!

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
깨위님의 프로필 이미지
깨위

작성한 질문수

질문하기