interface ee1{
public void s();
}
class ww1 implements ee1{
public void s() {
System.out.println(" In Class WW1");
}
}
class qq1 implements ee1{
public void s(){
System.out.println("In Class qq1");
}
}
class GEN_INTERFACE{
public static void main(String[] rrrr){
ww1 ob=new ww1();
qq1 ob1=new qq1();
ee1 rr;
rr=ob;
rr.s();
rr=ob1;
ob1.s();
}
}
答案 0 :(得分:1)
您的示例似乎不正确,原因如下:
您可能误认为多个类实现了相同的根接口和#34;多重继承",它实际上是指从多个根继承的单个类。
您可能错误地将类的公共成员的简单访问误认为是对父类的访问类型"特征"在继承的概念中描述。
您可能错误地通过其父接口类型之一(例如ee1
)引用对象作为多重继承。
在您的示例中,您没有任何多重继承或任何继承。你做的内容是:
ww1
实施 ee1
。qq1
也实施 ee1
且与ww1
无关。GEN_INTERFACE
(实际上是一个类,而不是一个接口),并且根本没有使用继承。ww1
中的代码访问qq1
和main
的公共成员,这也与继承无关。 ww1
访问qq1
和ee1
的所述成员。这只是普通的旧运行时多态性。现在,尽管如此,即使您的示例是继承,Java也不支持多重继承。它确实支持继承多个接口,但是,definition,这不是多重继承,即使它具有它的一些功能:
一些面向对象的语言(如C#,Java和Ruby)实现单继承,尽管协议或接口提供了真正多重继承的一些功能。
您可以在那里和其他地方详细了解多重继承的详细信息。
多重继承在例如: C ++:
class Base1 { ... };
class Base2 { ... };
class Derived : public Base1, public Base2 { ... };
Java中没有等价物;但请注意,这使得"多重继承"事实是Derived
继承自多个基类。
答案 1 :(得分:1)
为了理顺你的主张,你写了
ww1 ob=new ww1();
qq1 ob1=new qq1();
ee1 rr;
rr=ob;
rr.s();
rr=ob1;
ob1.s();
用语言说,
ww1
是ee1
; qq1
是ee1
; ww1
类型的变量qq1
访问rr
和ee1
的实例; 你的主张在以下几点上是错误的:
我可以解释术语多重继承以解决你的问题的唯一方法是#34;一个类型可以有多个继承它的孩子"。这是:
a)适用于Java和所有其他具有类层次结构的语言;
b)对术语"多重继承"的错误解释,它涉及一个类可能有两个父类的情况。
我希望我正确地猜测你的实际问题是什么。
答案 2 :(得分:-1)
在Java中不能有多重继承。你只能用C ++。
根据定义,多重继承意味着扩展超过1个类。由于钻石问题,任何OOP语言都不允许你有多重继承。
然而,C ++是通过编译器进行的OOP,因此他可以根据多重继承产生的粗略定义进行编译时检查。
发布前请先google: