Java与C++的继承重载方法访问的区别?

aqq1984 2004-11-18 02:50:28
小弟刚看了几页Java书,发现Java对方法重载与C++有一点区别:
Java对类继承的方法重载时的访问权限定是只能更大,不能更小. 即只能将protected的方法重载为public的,反之则为错误.
而C++则恰恰相反,只能将public的方法重载为protected的, 反之则为错误.
两种思想截然相反,令小弟百思不得其解!到底这种访问权限定的变化都是基于什么样的思想而设的?为什么对同一个问题的处理会产生两种截然相反的语言特性呢?
各位老鸟可否根据工作实践的经验给小弟解解惑!!有兴趣的各位也可以发表一下自己的看法, 以求对继承问题的本质可以从这个侧面窥见一斑!!
...全文
175 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
重载:同一个类的同名方法
覆盖:父类和子类之间的同名方法

楼主好像还不懂覆盖和重载

隐藏就更不懂了
yanghua0231 2004-11-19
  • 打赏
  • 举报
回复
其实大部分都查不多呀,只有个别地方不同而以。
java的继承是单继承的,一个子类只有一个父类,但是一个父类可有多个子类,c++是多继承的,一个子类可以有多个父类,
public ,protected.priviated的用发大多都想同,
在java的方法的重载上和c++用发也相是。
比c++多的是java在类的用发上比c+=更加的灵活多变,多了个interface类,具体的用发,你可以查看想关的java书籍
stone_8002 2004-11-19
  • 打赏
  • 举报
回复
小弟对c++没什么深入研究,楼上的说的对,继承超类的方法并进行改写应该叫做覆盖而不是重载。一般来说,超类中的方法定为protected就是为了在子类中方便调用和重写的,要显式用到这个方法当然要定为public,就算要作为下阶超类,最少也要定为protected的,只是觉得应用方面是这样的。也见到过书上写过,编译器会给出警告:提供一个较低的权限,不知道是基于什么道理的
ismelong 2004-11-19
  • 打赏
  • 举报
回复
java的protected和c++的proteced有很大区别,java的大为松散了。C++对子类覆盖几乎没有什么限制,可以扩大也可以缩小的,你自己再试试。而java呢只能放大。
zedk928 2004-11-19
  • 打赏
  • 举报
回复
理论太复杂,会用就行了
catblue 2004-11-19
  • 打赏
  • 举报
回复
Java对类继承的方法应该叫覆盖,不能叫重载

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧