java中跨继承类的函数重载与函数重写
考虑下面的代码java中跨继承类的函数重载与函数重写,java,inheritance,polymorphism,overloading,overriding,Java,Inheritance,Polymorphism,Overloading,Overriding,考虑下面的代码 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);
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,因为它们是同一类的一部分
我遇到了这些链接-
虽然它们提供了有用的信息,但并没有真正回答我的问题
这只是我在学习Java多态性时遇到的一个概念性问题。任何帮助都将不胜感激
我的问题是,如果标签3实际上是函数重载,那么它重载的是哪个函数?标签1还是标签2
标签2,因为重载只出现在子类中。超类中没有重载。虽然您可能会争辩说,既然标签2覆盖了标签1,答案是两者兼而有之,但在任何重载实际发生的上下文中,您都必须进行覆盖-例如,您必须处理子类引用-因此实际上它只是标签2。重载发生在类中,因此,您的假设是正确的 标签2和标签3过载
尽管您可能会争辩说,由于标签2覆盖了标签1,答案是两者兼而有之。这是我最初的想法,但我意识到函数重载只适用于同一类的上下文。谢谢你澄清我的疑问,谢谢你确认我的假设。但我必须提供另一个答案作为“接受答案”,因为它涉及更多细节。