首页 > 解决方案 > 可以说“方法重载”,其中两个没有关系(扩展)的差异类具有相同的方法名称但不同类型的参数?

问题描述

我知道 Java 方法可以在同一个类或子类中重载。

但是我可以在非子类中重载 Java 静态方法吗?

我对下面的代码有点困惑。

class A {   
    public static void main(String[] args) {
        System.out.println("Inside main's (String[]) method");      
    }
}

class B {
    public static void main(int[] args) {  // [1, 2, 3]
        System.out.println("Inside main's (int[]) method");
    }
}

public class _2b_Overloading_Staticmethod_NonSubClass {
    // JVM's entry point
    public static void main(String[] args) {
        A.main(args);
        B.main(new int[]{1,2,3});
    }
}

标签: javaoverloading

解决方案


我知道 Java 方法可以在同一个类或子类中重载。

正确的。当同一个类中的多个函数共享相同的名称但参数不同时,该方法被认为是重载的。

public class A 
{

    public void foo(int param)
    {
    }

    public void foo(string param)
    {
    }
}

但是我可以在非子类中重载 Java 静态方法吗?

是的你可以。子类是从父类(也称为超类)继承属性的类。如果类是子类而不是子类或者方法是静态的,则没有禁止方法重载的规则。

public class A 
{

    public static void foo(int param)
    {
    }

    public static void foo(string param)
    {
    }
}

但是,您问题中的上述代码不是方法重载的示例,因为具有相同名称(main)的方法不包含在同一类/范围内。然而,它们的参数列表确实有所不同,但这并不重要。


推荐阅读