SMALL

자바는 다중 상속은 허용하지 않는다.


다중 상속을 허용하면 부모 객체가 누구인지 혼동이 온다. 이것을 다이아몬드 문제라고 말한다.



class 회장 {

public void execute() {

System.out.println("회장");

};

};


class 회장의왼팔 extends 회장{


@override

public void execute() {

System.out.println("회장의왼팔");

};

};


class 회장의오른팔 extends 회장{


@override

public void execute() {

System.out.println("회장의오른팔");

};

};


class 부하직원 extends 회장의왼팔, 회장의오른팔 {


@override

public void execute() {

super.execute(); (?)

};

};

위의 사진과 코드를 보면 부하직원이 왼팔과 오른팔을 상속 받으면 누구의 말을 들을지 모른다.. 


하지만 인터페이스는 다중 상속이 되는걸 볼수 있다.

왜냐하면,, 인터페이스는 선언만 하고 구현을 하지 않으니 가능하다..


ps. 자바8이상에서는 인터페이스에서 default로 매서드를 선언하게 된다면 구현을 할 수있게 된다. 그렇게된다면 위와 같은 오류가 생기게 된다.



LIST

'전공 > JAVA' 카테고리의 다른 글

String, StringBuffer, StringBuilder 차이  (0) 2020.07.02
JNI  (0) 2020.06.24
try-with-resource  (0) 2018.07.08
컬렉션  (0) 2018.05.13
JVM  (0) 2018.05.02

+ Recent posts