java关于子类与继承习题

想请问一下为什么这段代码的B会报错呀? B这行存在了什么问题?

img

方法名重名,B继承A其实B类里面已经有A类里面的getNum方法了,这个时候你在定义一个getNum方法,到时候调用B.getNum,系统是分辨不出你调用的是有返回值的还是没返回值的方法,所以这里就会报错,你可以在B类方法里面加参数,例如void getNum(String a)

函数覆盖发生在父类与子类之间,其函数名、参数类型、返回值类型必须同父类中的相对应被覆盖的函数严格一致

void 换成float

这是因为E继承了A,E要重写父类A中的方法,重写方法时,返回值,方法名,参数列表相同,只有权限修饰符可以不同。

方法的重写是指两个方法的返回值、方法名、参数列表相同,方法的重写,不能发生在同类中,只能发生在子类中。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。方法重写的权限:子类中的权限大于或等于父类的权限,(修饰符高低:private < 默认修饰符<protected < public)
特殊情况:子类不能重写父类被声明为private权限的方法
如果对你有帮助,请采纳哦,如果有什么问题可以追问哦!!!!

方法名和父类重名了
如果你是要重写父类的方法就把返回值改成float;
如果你是要写一个子类单独的方法就把名字改了;