다중상속이 불가능한 이유
어찌보면 클래스는 당연히 다중상속이 안된다. 클래스라는 구조 특성상 그럴수밖에없다.
무언가가 구현되어있는 클래스가 두개 있고 안에있는 메서드의 이름이 동일할 때 이 둘을 다중상속 받는다면 자식 클래스가 이 메서드를 쓰는 상황이 있다고 가정해본다면,
JVM 입장에서는 어떤걸 상속받아야 하는지 모른다. 이것을 다이어몬드 문제라고도 함 혹은 메서드의 모호성이 있다고함
얜 왜 다중상속 됨?
이와 동일하게 인터페이스는 당연히 다중상속이 된다. 왜냐면 인터페이스는 어차피 구현체가 없기 때문이다. 뭔말이냐면 어차피 위에서 뭘 extends해도 상관없다는거다. 왜냐면 받은 인터페이스공간에서 구현할거니깐? = 메서드의 모호성이 없음
우선 목적이 다르다.
추상 클래스는 기본적으로 클래스 이며 이를 상속, 확장하여 사용하기 위한 것다.
반면 인터페이스는 해당 인터페이스를 구현한 객체들에 대한 동일한 사용방법과 동작을 보장하기 위해 사용한다.
인터페이스는 추상클래스의 일종이고 다중상속을 지원한다. 이는 다형성을 극대화시킬 수 있고 유지보수도 높일 수 있다~