首页 > 试题广场 >

已知如下类定义,如下哪句可以正确地加入子类中?

[单选题]
已知如下类定义:
class Base {  
 public Base (){ 
 //... 
 }  
 public Base ( int m ){ 
 //... 
 }  
 public void fun( int n ){ 
 //... 
 } 
}  
public class Child extends Base{  
 // member methods  
}  
如下哪句可以正确地加入子类中?
  • private void fun( int n ){ //...}
  • void fun ( int n ){ //... }
  • protected void fun ( int n ) { //... }
  • public void fun ( int n ) { //... }
方法的重写(override)两同两小一大原则
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
编辑于 2015-11-09 11:18:00 回复(39)
B中是default因此访问权限小于父类是不可以的
发表于 2017-07-15 19:38:12 回复(0)
两同两小一大
发表于 2016-02-25 23:27:33 回复(0)
A,B,C都会提示如下信息:
Cannot reduce the visibility of the inherited method from Base
意思就是告诉你:不能降低从基类继承的方法的可见性。
那么,为什么不能降低可见性呢?
因为,每个子类的实例都应该是一个基类的有效实例,如果降低了方法的可见性,那么就相当于子类失去了一个父类的方法,这个时候,父类将不是一个有效的基类。
参考:http://stackoverflow.com/questions/1600667/why-cant-you-reduce-the-visibility-of-a-method-in-a-java-subclass
发表于 2015-08-17 14:05:11 回复(13)
子类方法的权限至少要大于父类方法的权限,只能选D
发表于 2015-05-30 16:16:05 回复(4)
选D,下面是之前总结的
发表于 2018-07-13 11:18:33 回复(6)
D把 子类继承至少要权限满足父类即可 父类是public 子类只能是public了
发表于 2015-02-23 18:44:27 回复(0)
忘了还有一个默认修饰符default了,不加就是default,所以b不行,子类方法的权限必须要大于父类方法的权限。
编辑于 2016-10-02 17:52:02 回复(1)
D.
子类重写了父类的方法,子类的方法的权限修饰符不能比父类低,最好与父类一致。(public > 默认修饰符>protected>private)
父类是public的,那么子类只能是public的
发表于 2015-08-19 17:57:45 回复(4)
两小一大原则
发表于 2021-03-23 17:43:07 回复(0)
Java中子类在重载父类的函数时访问权限不能比父类中的低,父类的函数权限为public,子类只能是public。

发表于 2015-09-04 20:56:03 回复(0)
子类的方法修饰权限必须要大于或者跟父类的被覆盖的方法权限相同
发表于 2015-05-30 11:22:32 回复(0)
A
发表于 2014-12-29 09:55:08 回复(0)
子类重写父类方法,访问权限要大于等于父类访问权限。
发表于 2022-03-04 08:43:07 回复(0)
子类重写父类的方法,访问权限必须大于等于父类
发表于 2019-11-08 15:49:06 回复(0)
Java是不是不存在C++中的隐藏这一概念呀?求解答
发表于 2018-03-01 19:32:49 回复(0)
子类继承父类不能降低可见性
发表于 2015-11-07 21:50:05 回复(1)
本题考的是重写的条件中子类不能比父类有更低的访问权限,因为父类中的fun()是用public 修饰的,所以子类中只能用public修饰。
发表于 2015-10-26 20:34:41 回复(0)
子类的权限一定不能比父类小
发表于 2016-03-07 21:18:58 回复(3)
D
子类方法的权限字少要大于父类方法的权限
发表于 2015-03-28 17:23:45 回复(0)