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,答案是两者兼而有之。这是我最初的想法,但我意识到函数重载只适用于同一类的上下文。谢谢你澄清我的疑问,谢谢你确认我的假设。但我必须提供另一个答案作为“接受答案”,因为它涉及更多细节。