关于访问控制符 在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。 上面这句话是为什么?请详细说明一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 子类的范围要比父类的范围大,或者相同。如果父类为缺省的话,子类就不能用private修饰。understand ? 楼上说的就是那句话的字面意思,我还是晓得的。我是问为什么?understand ? 如果父类中的方法是public的,子类重载了,如果子类中的该方法不是public的,那么对象就不能直接调用该方法,这就使得父类中原来可以使用的方法到子类中就不可用了,这样的子类有什么用? 正确的说法:如果子类覆盖了超类(也叫父类、基类)的方法,那么该方法的访问级别(也有叫可见级别的)与被覆盖方法的访问级别相比可以相同或者更广。例如:超类方法访问级别是 protected,那么子类方法的访问级别可以是 protected(相同)或 public(更广)。如果超类方法的访问级别已经是 public 了,那子类的只能是 public,因为没有更广的访问级别了。原因:子类不能修改超类定义的接口。一旦子类能将超类的公有方法覆盖并且私有化,那子类就修改了超类定义的接口了。 类访问修饰符private,protected:只能用于内部类public:可以被同一包或不同包的类访问缺省:可以被同一包的类访问,但不能被其它包的类访问,即使用import引入或用包名.类名也不行public成员:所有的类都可以访问protected成员可被子类访问,不管是同一个包还是不同包,同一个包中非子类需要通过对象访问private成员:只有自身类才能访问,其它类一概不能访问缺省:称为friendly,可被同一包的所有的类访问好好看这个访问修饰符的基本用法...也许你就会明白怎么使用了.. "一旦子类能将超类的公有方法覆盖并且私有化,那子类就修改了超类定义的接口了"那又会出现什么结果? 我不清楚的地方就在这里。子类覆盖超类的方法的目的是什么?为什么不能私有化?ding 子类重写了父类的方法,关于修饰符使用,规则是越来越宽松。打个比方就是儿子从父亲身上学来了本事,而且本事越来越明显。总结下 :父类方法修饰符 子类修饰符号private " " protected public " " protected publicprotected publicpublic public 重载和覆盖是俩个概念,重载都不是一个函数了,根据参数调用需要的,根本用不着限制什么可见范围,而覆盖是完全相同的俩个方法,只不过一个在超类,一个在子类,此时必须要求子类的可见范围不能缩小,理由如9楼。重载,都不是一个函数了,那为什么要重载,直接写一个不就行了。覆盖,也一样啊。是不是重载和覆盖都出现在继承extends或实现implement一个类时?覆盖范围缩小了,后果会怎么样? 反射 byte取值问题 Apache+tomcat 整合的问题 帮个忙 ! 大家都进来看看吧。 谢谢了 1 一道英文题,高手进,谢谢帮忙 读大文本数据中的问题 如何把byte输出时显示成相应的16进制 初学java,有个问题请教一下 jdbc,我怎么找不到jdbc driver? jar包资源文件 eclipse提示:标记“createPool”上有语法错误,在此标记之后应为 Identifier???
如果父类为缺省的话,子类就不能用private修饰。
understand ?
例如:超类方法访问级别是 protected,那么子类方法的访问级别可以是 protected(相同)或 public(更广)。如果超类方法的访问级别已经是 public 了,那子类的只能是 public,因为没有更广的访问级别了。
原因:子类不能修改超类定义的接口。一旦子类能将超类的公有方法覆盖并且私有化,那子类就修改了超类定义的接口了。
private,protected:只能用于内部类
public:可以被同一包或不同包的类访问
缺省:可以被同一包的类访问,但不能被其它包的类访问,即使用import引入或用包名.类名也不行
public成员:所有的类都可以访问
protected成员可被子类访问,不管是同一个包还是不同包,同一个包中非子类需要通过对象访问
private成员:只有自身类才能访问,其它类一概不能访问
缺省:称为friendly,可被同一包的所有的类访问好好看这个访问修饰符的基本用法...也许你就会明白怎么使用了..
我不清楚的地方就在这里。子类覆盖超类的方法的目的是什么?为什么不能私有化?
ding
打个比方就是儿子从父亲身上学来了本事,而且本事越来越明显。
总结下 :
父类方法修饰符 子类修饰符号
private " " protected public
" " protected public
protected public
public public
重载,都不是一个函数了,那为什么要重载,直接写一个不就行了。
覆盖,也一样啊。
是不是重载和覆盖都出现在继承extends或实现implement一个类时?覆盖范围缩小了,后果会怎么样?