首页 / JAVA / Java继承 – 请解释一下
Java继承 – 请解释一下
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java继承 – 请解释一下,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1076字,纯文字阅读大概需要2分钟。
内容图文
class A {
public void talk(){
this.sayIt();
}
private void sayIt(){
System.out.println("class A says...");
}
}
class B extends A {
private void sayIt(){
System.out.println("class B says...");
}
}
测试类,主要方法:
B b = new B();
b.talk()
//output
class A says...
从那以后我无法得到这个:
B类继承自A类,即公共成员,无法查看/继承私有函数.所以在B类中,我们可以调用talk(). //因为它是由父类继承的.
现在,在talk()方法中,调用sayIt(),因为sayIt()是在B类中定义的,
我希望在执行this.sayIt()时调用B.sayIt().
“这个”不是指B级吗?
请解释.
解决方法:
因为您将sayIt()定义为私有,所以B类不能覆盖它.因此,您有两个sayIt()定义,而不仅仅是一个被子类覆盖的定义.
在A类代码的一部分内部,即使B类版本受到保护或公开,它也将始终从A类调用该版本.这是因为A类只知道类A中的版本,因为B类版本不是覆盖,而是一种完全不同的方法,恰好可以共享相同的名称.
在B类代码的一部分内部,它总是从类B调用该版本,因为A类版本被标记为私有.正如其他人所指出的,如果您将定义更改为受保护或公开,它将对B类可见,并且它将执行您想要的操作.
请注意,如果您要使用默认(包)可见性,那么范围规则将变得非常复杂,实际结果将根据哪个子类在同一个包中以及哪些子列在不同的包中而有所不同.
内容总结
以上是互联网集市为您收集整理的Java继承 – 请解释一下全部内容,希望文章能够帮你解决Java继承 – 请解释一下所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。