A选项是子类J_Sub对超类J_Super的覆盖。
public floatgetNum(){ float 和 getNum之间你加空格了吗?没加空格不能编译的。
你在子类中加了 B 选项的方法,如果让虚拟机调用的话,它会调用哪个呢?方法名相同,参数列表相同,虚拟机会崩溃的。打个比方,这相当于 你叫张三,你的身份证号是1234,另外一个人也叫张三,他的身份证号也是1234,你当然认为这没什么,但这会让公安部门崩溃的,虚拟机就像公安部门,你这样做他很生气,后果很严重。
C、D是对父类方法的重载(参数列表不一样),重载方法可以存在于同一个类中,相当于有两个张三,但身份证号不一样,公安部门知道哪个是哪个。
所以答案是B
如果你题目没打错的话那A选项是没错的。它是覆盖了父类的方法。
B,增加方法的话要么方法名不一样,要么参数传递的参数个数或类型不一样。
B 选项虽然返回值类型不一样,但是函数名和参数都与父类中一样。
B
会导致编译错误。
A 方法名,参数,与父类相同 这就是方法的重写。
B 方法名相同,参数相同,返回类型不同会认为是 与父类方法冲突。 overrides J_Super.getNum
C
D
方法名相同,参数不同,这是重载。
A)是重写(覆盖),返回类型和参数都一样,这个应该可以编译的;
B)既不是重载也不是重写,所以不能编译;
C)多了一个参数,并且返回类型改为void,是重载,可以编译;
D)多了一个参数,并且返回类型变为double,也是重载,可以编译。
B,不可以,java中区分方法是按照方法签名,即方法名+参数形式,如果两者相同则视为同一个方法,所以B和父类中的getNum()冲突了
A和父类中方法完全相同(包括返回类型),视为子类覆盖父类行为