我可以在非子类中重载Java静态方法吗?[等候接听]

我知道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});
    }}


陪伴而非守候
浏览 600回答 2
2回答

忽然笑

另外,还有一些来自JLS的备份,加上一堆例子。超载来自JLS§8.4.9:如果一个类的两个方法(无论是在同一个类中声明,还是由一个类继承,或者一个是声明的,一个是继承的)都具有相同的名称,但签名不是覆盖等效的,那么方法名称就是超载。这对静态成员来说很重要......class Foo {     static int someStaticMethod(String s) {         return 0;     }     static int someStaticMethod(String s, boolean b) {         return 0;     }}......以及非静态的:class Foo {     int someMethod(String s) {         return 0;     }     // Method overloading     int someMethod(String s, boolean b) {         return 0;     }}如果一个类从另一个类继承一个方法,也会出现重载:class Bar extends Foo {     // This is also a case of overloading, because Bar inherits     // someMethod(String) from Foo     int someMethod(String s, double d, boolean b) {         return 0;     }}但如果两种方法都不相关,尽管名称相同,但它们永远不会被称为超载。这是两种非静态方法的情况class Alpha {     void anotherMethod(String s) { }}class Bravo {     // No overloading involved     void anotherMethod(boolean b) { }}以及静态方法:class Charlie {     static void someThirdMethod(String s) { }}class Delta {     // No overloading involved     static void someThirdMethod(boolean b) { }}对于静态成员,如果其中一个类继承了另一个,则情况甚至如此:class Echo {     static void lastMethod(String s) { }}class Foxtrot extends Echo {     // No overloading involved. Static members are never inherited,     // so effectively, these two methods are unrelated     static void lastMethod(boolean b) { }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java