Gen*_*oax 8 java oop overloading
如果我在Java中有以下代码:
class A {
public int add(int a , int b) {
return (a+b);
}
}
class B extends A {
public float add(float a , float b) {
return (a+b);
}
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,子类并不完全覆盖基类的add
函数,因为它们具有不同的签名,并且仅当它们在相同的范围内时才发生重载的概念.那么,add(float , float)
子类中的函数是否B
被视为一个全新的函数,并且重载和重写的概念不适用于它?它是否使用"静态绑定"或"动态绑定"?
简而言之,是的。要重写,您需要复制完整的方法签名,其中包括方法名称、参数和返回类型。来自教程
子类中的实例方法与超类中的实例方法具有相同的签名(名称,加上其参数的数量和类型)和返回类型,该实例方法将覆盖超类的方法。
您可能需要考虑@Override 注释,如果您没有成功覆盖方法,它将触发编译器错误。
在这个特定的实例中,看起来您可能不需要覆盖太多包含泛型的解决方案。所以你可以实例化一个类a<Integer>
和一个类似的类a<Float>