欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

继承父类的方法是操作的父类成员变量吗?解决方案

更新时间: 2014-05-14 20:40:22 责任编辑: Author_N3

 

继承父类的方法是操作的父类成员变量吗?
当子类继承了父类,老师说“子类就拥有了父类所有非private的方法”。
Java code
public class TestMessage {

    public static void main(String[] args) {
        Te t = new Te();
        System.out.println(t.getMessage());
    }

}

class Excep{
    private String excep = "111";
    String getMessage(){
        return excep;
    }
}

class Te extends Excep{
    private String excep = "222";

}


比如像上面一样,父类的getMessage方法是返回自己的被标记为private的字符串,那子类继承过后,产生子类对象,调用这个方法,为什么还是打印父类字符串?难道不是操作自己的字符串来打印“222”吗?



--参考方法--
因为getMessage方法在父类里面 他怎么可能掉子类的东西 分类不能掉子类
--参考方法--
如果你想输出222,需要在子类重写一遍
String getMessage(){
return excep;
}
将父类方法覆盖掉
--参考方法--
我觉得一本《java编程思想》会对你非常有帮助。这本书相比你老师,或许更加优秀。还是说说你的问题。子类继承父类,如果子类重写父类的A方法,那么子类调用A方法时,会去掉用子类的A方法。如果子类未重写父类的A方法,那么子类将会调用父类的A方法。

java查找某方法过程是这样的。先查找子类是否有此方法,如果没有,就去找父类的此方法。如果父类没有,则编译出错。

在java设计者相对现实来设计时,是考虑一般儿子比父亲更加优秀,所以优先考虑调用儿子的方法。这也是重写方法的初衷。
--参考方法--
JVM先查找子类是否有此方法,如果没有,就去找父类的。

getMessage方法在父类里面,所以打印的也就是父类的值,跟子类无关。

希望这个答案对你有帮助
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-14 20:40:22
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/305515/
本文WWW.DOC100.NET DOC100.NET版权所有。