这个简单的程序的输出是This is base
。混淆方法绑定
public class mainApp{
private void func(){
System.out.println("This is base");
}
public static void main(String[] args){
mainApp newObj = new derived();
newObj.func();
}
}
class derived extends mainApp{
public void func(){
System.out.println("This is derived");
}
}
我的问题是,当我们使用这条线被
mainApp newObj = new derived();
我们不实际创建的对象使用基类mainApp的基准导出的类。所以,当我使用该对象来调用它的方法时,为什么我不能从派生类中获取方法?为什么我从基类中获得方法。使用这条线,
mainApp newObj = new derived();
,我们是否与mainApp的参考工作OR我们正在与衍生类的对象工作。哪一个是正确的?
哇,优良的答案,你打我一拳。 @iamcreasy在[Java和多态性](http://home.cogeco.ca/~ve3ll/jatutor5.htm)上为您阅读了一些内容,希望能够澄清关于您的问题的混乱情况。 – Grambot
我不习惯Java中出现的静态和动态类型之间的区别!当我看到这个时,我真的很惊讶。好东西,我先学习了C++。 :-) – templatetypedef
@templatetypedef所以,当我将使用的任何参考后点符号,我将使用该特定参考的方法无论所述参考所指向的对象。这是对的吗? &什么意思是“参考是静态类型的”? –