2023.10.18
1.
class A{ public A foo() { return this; } } class B extends A { public A foo(){ return this; } } class C extends B { _______ } 可以填入哪个而不报错 A public void foo(){} B public int foo(){return 1;} C public A foo(B b){return b;} D public A foo(){return A;}
答案是C
重写 要求两同两小一大原则, 方法名相同,参数类型相同,子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限。[注意:这里的返回类型必须要在有继承关系的前提下比较]
重载 方法名必须相同,参数类型必须不同,包括但不限于一项,参数数目,参数类型,参数顺序
再来说说这道题 A B 都是方法名和参数相同,是重写,但是返回类型没与父类返回类型有继承关系,错误 D 返回一个类错误 c的参数类型与父类不同,所以不是重写,可以理解为广义上的重载访问权限小于父类,都会显示错误
标签:foo,return,类型,重载,父类,重写,public From: https://www.cnblogs.com/RynerLee/p/17773698.html