首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

子类向上转型后怎么调用父类方法

2012-06-15 
子类向上转型后如何调用父类方法Java codepublic class Wangwang extends Dog {int age 50public void

子类向上转型后如何调用父类方法

Java code
public class Wangwang extends Dog {    int age = 50;    public void say() {        System.out.print("I'm the children");    }    public static void main(String[] args) {        Dog a =new Wangwang();                a.say();    }}class Dog  {    public void say() {        System.out.println(" I'm the father!");    }}

显然,输出"I'm the children"
向上转型后 实例不能访问子类特有的属性与方法,但这个“父类”调用自己的方法时,调用到的却还是子类overrided的.
问1:有什么方法能让向上转型后的类调用没被重写过的方法?//即在不修改类的构造情况 下使输出 为" I'm the father!"
问2:重写到底是什么一回事,是在父类方法对应的 内存上写入新内容,还是在另一块新内存上写入新方法,即父类方法还在吗?

[解决办法]
探讨
楼主想多了:

一般来说,如果不希望子类重写父类的方法,将他声明为final即可。
显然 a.say(),要么是父类的方法,要么是被覆盖的子类的方法,如果你需要的是父类的行为,应该调用父类对象的实例。如果你希望子类有父类一样的行为,就不应该覆盖此方法。

热点排行