首页 > 试题广场 >

将下列哪个代码(A、B、C、D)放入程序中标注的【代码】处将

[单选题]
将下列哪个代码(A、B、C、D)放入程序中标注的【代码】处将导致编译错误?
class A{
    public float getNum(){
        return 3.0f;
    }
}
public class B extends A{
    【代码】
}

  • public float getNum(){return 4.0f;}
  • public void getNum(){}
  • public void getNum(double d){}
  • public double getNum(float d){return 4.0d;}
方法重写要求方法名,返回值类型,参数完全相同,所以A符合,B返回值类型不同,编译错误。而C和D不仅返回值类型不同,参数也不同,不属于方法重写,而是属于子类自己新增的方法。所以选B
编辑于 2020-09-05 15:31:27 回复(11)
B类继承自A类,A类中存在一个getNum()方法,问下列哪个会出错。
也就是说,问,下列哪个重写A的getNum()方法出错。

重写要满足的条件:(好比父亲给儿子100块钱让儿子去花)
1.参数列表要完全相同——(你拿的就是100块钱,变不成别的,怎么花随你,但是钱数、参数列表不变)
2.返回类型是父类方法的返回类型的子类型——(返回值,可以说是你花100得到的是价值小于等于100的东西,你能买回来的一定在100之内)
3.访问权限不能大于父类方法权限——(就是访问修饰符要比父类的小于等于)

这里访问权限都相同,返回类型都是基本类型,只看相不相同就可以
A.返回值类型相同,参数名参数列表相同,满足方法重写,是正确的
B.返回值类型不同,参数名参数列表相同,是重写但不满足重写条件,错误
C.返回值类型不同,参数名参数列表不同不是重写,只是一个重名方法
D.返回值类型不同,参数名参数列表不是重写,只是一个重名方法

所以选B
发表于 2021-03-24 18:25:17 回复(11)
A是方法的重写,肯定没有问题。重写就是方法名、方法的参数和返回类型都必须相同
C和D之间构成子类之间方法的重载,所以也没有问题。重载就是方法名相同,但参数列表不同与返回值类型无关,属于重名方法
B方法名相同,参数相同【符合重写、不符合重载】,返回类型不同【不符合重写、重载无关可以看作符合重载】,这样的方法是模棱两可的,当子类调用的时候,根本区分不出来该调用父类的方法还是自己本身的方法,所以这种方法编译直接pass掉。【重载和返回类型无关 和参数列表(参数个数、参数类型有关),重载对同一个类而言,重写描述的是父子类之间】
编辑于 2021-07-09 09:10:28 回复(3)
知道两同两⼩⼀⼤原则,却不清楚如果⽅法的返回类型是void和基本数据类型,则返回值重写时不可修改。但是如果⽅法的返回值是引⽤类型,重写时是可以返回该引⽤类型的⼦类的。
发表于 2021-03-27 10:14:10 回复(1)
补充一下,两同两小一大原则,即: 方法名相同,参数类型相同。 子类返回类型小于等于父类方法返回类型。 子类抛出异常小于等于父类方法抛出异常。 子类访问权限大于等于父类方法访问权限。
发表于 2021-04-12 11:12:06 回复(1)
这是C++么?
发表于 2020-08-25 14:04:38 回复(3)
得弄清楚他想考什么:方法重写要求方法名,返回值类型,参数完全相同,所以A符合,B返回值类型不同,编译错误。而C和D不仅返回值类型不同,参数也不同,不属于方法重写,而是属于子类自己新增的方法。所以选B
发表于 2021-03-31 11:48:19 回复(0)
本题是重写和重载的区别:
    A、标准重写,覆盖父类的方法,重写方法体
    B、不是重写,重写要求返回值与父类方法返回值相同
          不是重载,重载要求参数不同,不能同参不同返回值(子类可以重载父类方法)
    C、重载,参数不同
    D、重载,参数不同
本人也在学习,关于子类能否重载父类方法网上有争议,欢迎大家评论不同观点,一起进步。
发表于 2022-06-25 16:19:13 回复(0)
当子类要重写父类的方法时,参数列表一样,只要返回类型是父类返回值的子类或相等也行
发表于 2022-05-11 14:31:33 回复(0)
重写:1,子类方法名==父类方法名 2,子类形参列表 == 父类形参列表 
                时即构成重写需按重写规范进行(不然报错)
重写规范:1,子类返回类型 <= 父类返回类型,
                  2,子类访问修饰符 >= 父类访问修饰符,
                  3,子类抛出错误类型 <= 父类抛出错误类型
重写注意
1,重写发生在父类和子类之间
2,子类访问不到父类方法时不构成重写


重载:本类内方法名相同构成重载
重载规范:形参列表不同

本人水平有限,有错误还请指出谢谢。
        
发表于 2022-04-23 20:07:49 回复(1)
ab选项是重写cd选项是重载
发表于 2021-10-12 17:18:35 回复(0)
首先判断是重写(override)还是重载(overload),重写是对父类方法的修,要求方法名+参数 要相同,返回类型+抛出异常范围小于等于父类;重载是对本类原有方法的提供多种状态的实现,要求方法名一定相同,参数一定不同,所以判断ab为重写,cd姑且称为重载。然后b不满足返回类型小于等于父类,故报错
发表于 2021-07-29 21:46:32 回复(0)

这是Java的题目呢!

函数重写也称为函数覆盖。
1.必须在继承里;
2.方法名、参数个数、参数类型和返回值类型必须一样;

A.方法名、参数个数、参数类型和返回值类型一致,可以
B.返回值类型不一致,编译错误,会出现二义性
C.返回值类型、参数类型和参数个数都不一致,属于子类新增的函数
D.返回值类型、参数类型和参数个数都不一致,属于子类新增的函数

发表于 2021-02-23 15:34:54 回复(1)
选B
发表于 2020-12-02 18:04:21 回复(0)
<p>这是Java吧?</p>
发表于 2020-10-15 16:27:44 回复(0)
就这???
发表于 2020-10-15 12:12:06 回复(1)
方法重写必须有返回值
发表于 2022-10-24 21:27:15 回复(0)
重写,方法名,参数相同,返回类型和异常范围小于等于父类 重载,方法名相同,参数不同
发表于 2022-09-14 00:23:03 回复(0)
重载是根据参数类型和个数来区分不同的方法,而不是依靠返回值类型。虽然在重载时可以使用不同返回值类型,但是从标准开发来讲,建议重载后使用同一种返回值类型
重写:
子类方法访问权限大于等于父类方法访问权限
子类方法返回类型小于等于父类方法返回类型
子类方法抛出异常小于等于父类方法抛出异常
编辑于 2021-12-28 14:17:39 回复(0)
方法重写要求方法名,返回值类型,参数完全相同,所以A符合,B返回值类型不同,编译错误。而C和D不仅返回值类型不同,参数也不同,不属于方法重写,而是属于子类自己新增的方法。所以选B 但此题没有写override注解,也不会有问题?
编辑于 2021-07-26 08:46:40 回复(0)