伙计们,在你们开始对我投反对票之前,请阅读这个问题,并请理解我不想在这里开始任何不愉快的事情。
这个问题的唯一原因是我越来越意识到,为了更容易就业,我必须了解 Java 和/或 C#。
好的,问题来了:
我知道 J 和 C# 中禁止多重继承。但是如果我这样做(因为我想要一个继承自两个类 B 和 A 的类):
//code in Java
public class B
{
public void methodFromB()
{
}
}
public class A extends B
{
public void methodFromA()
{
}
}
public class C extends A
{
public void methodFromC()
{
}
}
所以事实上,据我所知,我确实继承了它们(A 和 B,是的,我确实理解对此的正式解释是对象 A 是一个专门的 B 但如果我想要的话我会去做,但它看起来不太漂亮)
但是我必须先创建一个继承自另一个类的类,然后从它派生,而不是在一个声明中执行此操作?
虽然很有趣。如上所述(在 NetBeans 中)声明了这些类后,我发现在创建了类 C 的实例(在 main 中)之后,我无法在其上调用 methodFromC,这是该类中定义的方法。
这是什么原因呢?
谢谢。
最佳答案
即使您正在创建 C
的实例,C 的方法是否可见取决于您使用的编译时类型。例如,
C c = new C();
c.methodFromC(); // fine
有效,但是
A a = new C();
a.methodFromC(); // compiler error
不是,因为编译时类型是 A
,它没有声明 methodFromC
。
请注意,由于 C 和 A 都是 B 的子类,因此在这两种情况下都可以调用 methodFromB
。
关于c# - 多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466783/