Langhong(狼.红) 兄弟说的对,本示例代码的意思是要隐藏父亲的方法,但同时修改了返回值的类型,编译不会通过。如果字类要多态该方法,必须给予不同的参数表。 如: 7. class B extends A { 8. public short getNumber(Integer i) { 9. return 2; 10. }
就不会有歧义发生,也不会有编译问题。
kinoviti(-=K.V=-) 兄override并不只是对 相同的 方法名 相同的 返回值 对应的方法内容进行改写。 例如: int x double y; int square(int x) { return x*x; } double square(double y) { return x*y; } 该方法的重载也是可以的而它们的返回值是不同的; 而且我觉得B类在继承A类时同时也继承了A类的方法getNumber也就是说B类已经具有getNumber方法,所以在 class B extends A { public short getNumber(Integer i) { return 2; } } 时是对getNumber方法的重载因为它们的方法名是相同的。
有二义性当重载方法时必须有不同的参数表,B继承A重载getNumber方法时是相同的参数表出错。
override只是对 相同的 方法名 相同的 返回值 对应的方法内容进行改写。
就本例说:
我不知道 修改了 返回值的成员方法到底是进行了重载还是进行了重新生成新方法
如果说 是生成了 新方法 那就好理解了,继承的方法和新方法同名、同参数但是不同返回值《〈〈〈〈〈这坚决不允许的
如果说是 重载, 可是他们根本就不“像”,怎么能叫重载呢 你说对不, 形象吧
如:
7. class B extends A {
8. public short getNumber(Integer i) {
9. return 2;
10. }
就不会有歧义发生,也不会有编译问题。
例如:
int x
double y;
int square(int x)
{
return x*x;
}
double square(double y)
{
return x*y;
}
该方法的重载也是可以的而它们的返回值是不同的;
而且我觉得B类在继承A类时同时也继承了A类的方法getNumber也就是说B类已经具有getNumber方法,所以在
class B extends A {
public short getNumber(Integer i) {
return 2;
}
}
时是对getNumber方法的重载因为它们的方法名是相同的。