2010-01-09 4 views
15

가능한 중복 :
Cheat single inheritance in Java !!
Why is Multiple Inheritance not allowed in Java or C#?
Multiple Inheritance in java.Java의 여러 기본 클래스에서 상속하는 방법은 무엇입니까?

나는 우리가 여러 클래스에서 상속하는 인터페이스를 사용할 수 있지만 그것뿐만 아니라 상태를 상속 할 수 있음을 알아?
2 클래스의 정의가있는 메소드를 상속하고 Java의 3 클래스에 속하게 할 수 있습니까?

+0

가능한 중복 항목 : http://stackoverflow.com/questions/1262447/multiple-inheritance-in-java, http://stackoverflow.com/questions/1038314/alternative-of-multiple-inheritance-in-java, http://stackoverflow.com/questions/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c, http://stackoverflow.com/questions/70537/cheat-single-inheritance- in-java 등 –

+0

다른 질문은 IMO와 중복되지 않습니다. 그 질문은 왜 다중 상속이 없는지 묻습니다. 이 질문은 그 질문을 해결하는 방법을 묻습니다 - 다른 질문이 제공하지 않는 한 적절한 대답을하십시오. – HDave

답변

23

짧은 대답 : 할 수 없습니다. Java는 인터페이스의 다중 상속 만 가지고 있습니다.

약간 더 이상 답 :

interface Noisy { 
    void makeNoise(); 
} 


interface Vehicle { 
    void go(int distance); 
} 

class Truck implements Vehicle { 
    ... 
} 

class Siren implements Noisy { 
    ... 
} 

class Ambulance extends Truck implements Noisy { 
    private Siren siren = new Siren(); 

    public makeNoise() { 
    siren.makeNoise(); 
    } 

    ... 
} 
2
: 당신이 관심있는 방법은 인터페이스에 있는지 확인하는 경우는 "슈퍼 클래스"의 인스턴스에 대한 인터페이스, 다음 대표를 구현하는 클래스를 가질 수 있습니다

Java는 구현의 다중 상속을 명시 적으로 허용하지 않습니다. 인터페이스와 구성을 사용하여 비슷한 결과를 얻을 수 있습니다.

+0

로렌스가 제공 한 훌륭한 예는 무엇입니까 :) –

3

Java는 다중 상속을 지원하지 않습니다. 당신이 할 수있는 일은 작곡입니다.

25

자바에서는 다중 상속이 허용되지 않습니다. 대의원 및 인터페이스 대신

이 인터페이스에 Default Methods를 사용하는 것이 가능하다 자바 (8) 때문에
public interface AInterface { 
     public void a(); 
} 
public interface BInterface { 
    public void b(); 
} 

public class A implements AInterface { 
    public void a() {} 
} 
public class B implements BInterface { 
    public void b() {} 
} 

public class C implements AInterface, BInterface { 
    private A a; 
    private B b; 

    public void a() { 
     a.a(); 
    } 
    public void b() { 
     b.b(); 
    } 
} 

를 사용합니다.

관련 문제