当前位置:编程学习 > JAVA >>

初学者问题求教,请各位大神指教

刚开始学JAVA,遇到一个关于继承的概念问题,代码如下
class J_Base {
public void mb_method()
{
System.out.println("BASE");
}
}
public class TEST extends J_Base
{

public void mb_method()
{
System.out.println("Test");

}
public static void main(String args[])
{
Object a=new TEST();
((J_Base)a).mb_method();
}

}

运行结果是“TEST”;
但是我觉得a强制转换成了父类,应该调用父类的成员方法,应该是“Base”才对,怎么变成这个了?
求指教,是不是我的继承概念理解不对。

另外,我现在学的是《JAVA程序设计教程》雍俊海的书,请问这本书怎么样?
--------------------编程问答--------------------
还是上图,这个看的清楚一些,谢了! --------------------编程问答-------------------- 你重写了掉了父类的方法,当然只有子类的 --------------------编程问答-------------------- 因为你父类和子类的两个方法一样,子类把父类的重写了,你把其中任意一个方法的名字改一下就会掉用父类的方法 --------------------编程问答-------------------- 这样改就行了,
class J_Base {
public void mb_method()
{
System.out.println("BASE");
}
}
public class TEST15 extends J_Base
{

public void mb_method()
{
System.out.println("Test");

}
public static void main(String args[])
{
J_Base  a=new TEST15();
a.mb_method();
}

}

这已经超越继承了,是多态,父类的引用指向子类的引用,引用指向那个子类,就调用那个子类的方法:
--------------------编程问答-------------------- 父类的引用指向子类的对象,
J_Base  a=new TEST15();
父类的引用a ,指向子类的对象new TEST15();所以调用TEST15的方法mb_method(),输出Test --------------------编程问答-------------------- 虽然你强制转换了,但是执行时候它的对象仍然会调用子类的方法,叫动态绑定吧。。你可以看看马士兵的视频。。 --------------------编程问答-------------------- 父类的引用可以引用子类的对象,但是调用同名方法是,调用的是子类中的方法.这是java中Override多态
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,