A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张东健 中级黑马   /  2014-1-8 21:48  /  2019 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中为什么子类覆盖父类中的方法时权限需要不小于父类的该方法权限?
java很多是对生活中事物的映射,比如继承 ,比如抛异常子类的异常只能是父类异常的子集
对于覆盖,有谁能用大白话解释下

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

8 个回复

倒序浏览
如果在父类中是public的方法,子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
举个例子,在父类中是public的方法,如果子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义。
覆盖时,要么都静态,要么都不静态。 (静态只能覆盖静态,或者被静态覆盖)

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
因为子类一般都会比父类功能多,所以权限要大于父亲
还有 A a = new B(),B继承A,重写父类方法s(),如果在子类中变为了私有方法,那么调用a.s()就会出错

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
补充一下!静态形式上是可以覆盖的!但是没有实际意义,所以一般认定静态不能覆盖
回复 使用道具 举报
这就好比早起的手机一样,你现在的手机所有的功能都大于早期的,它造出来就是为人服务的,如果比以前的手机功能多但是你不能用,有什么意思呢?你说是这个意思吧!就好比Java中的继承了

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
谢谢各位同学的不吝赐教
回复 使用道具 举报
怎么提问结束 在哪呢,找了半天没找到
回复 使用道具 举报
DxxD 中级黑马 2015-3-12 14:30:17
9#
学习了。。。:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马