考虑以下代码
public class SuperClass
{
//label 1
void function(int a)
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{
//label 2
void function(int a)
{
a++;
System.out.println(a);
}
//label 3
void function(float a)
{
System.out.println(a);
}
}
据我所知,标签2是函数重写的一个例子,因为超类方法正在子类中用自己的实现重写,而标签3是一个函数重载的形式,因为参数不同而函数名称相同。
我的问题是标签3是否实际上是函数重载,哪个函数重载?标签1或标签2 ?
我的理论是标签3正在超载标签2 ,因为它们属于同一类。
我遇到过这些链接 -
Does overloading work with Inheritance?
Different ways of Method Overloading in Java
虽然他们提供了有用的信息,但他们并没有真正回答我的问题。
这只是我在学习Java中的多态性时遇到的一个概念性问题。任何帮助将不胜感激。
答案 0 :(得分:3)
我的问题是标签3是否实际上是函数重载,哪个函数是重载?标签1或标签2?
标签2,因为重载仅出现在SubClass
内。 SuperClass
中没有重载。 (虽然你可以争辩说,因为标签2覆盖了标签1,答案就是“两者”,但在任何实际发生过载的情况下,你必须有覆盖 - 例如,你必须要处理使用SubClass
引用 - 所以它实际上只是标签2.)
答案 1 :(得分:1)
在类中发生重载,因此,您的假设是正确的。
标签2和标签3重载