相关疑难解决方法(0)

为什么Java不允许覆盖静态方法?

为什么不能覆盖静态方法?

如果可能,请举例说明.

java static static-methods overriding

519
推荐指数
14
解决办法
26万
查看次数

相当于其他流行语言中的后期静态绑定(PHP)

<?php
class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // Here comes Late Static Bindings
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test(); // Outputs "B"
?>
Run Code Online (Sandbox Code Playgroud)

我希望在Java中得到一个等价的东西......就像这样

class A {
    public static void who(){
        System.out.println("A");
    };

    public static void test(){
        who(); //<<< How to implement a static:: thing here???
    }
}

class B extends A {
     public static void who(){
        System.out.println("B"); …
Run Code Online (Sandbox Code Playgroud)

php c++ python java

7
推荐指数
1
解决办法
2694
查看次数

为什么我可以重写静态接口方法?

我找不到任何好的来源来解释原因:

abstract class AA {
    public static void log() {}
}

class BB extends AA {
    public void log() {} //error
}
Run Code Online (Sandbox Code Playgroud)
interface CC {
    public static void log() {}
}

class DD implements CC {
    public void log() {} //Ok
}
Run Code Online (Sandbox Code Playgroud)

java methods static interface

6
推荐指数
1
解决办法
4718
查看次数

静态和非静态方法的方法重载

据我所知,在 Java 方法重载中,我们对所有重载方法使用相同的名称。而且,它们的返回类型也不是问题。但是如果我们使用与静态和非静态形式相同的方法会发生什么,如下例所示?我们可以考虑这个方法重载吗?

class Adder {

    static int add(int a, int b) {
        return a + b;
    }

    int add(int a, int b, int c) {
        return a + b + c;
    }

}
Run Code Online (Sandbox Code Playgroud)
class Test {

    public static void main(String[] args) {
        Adder a1 = new Adder();

        System.out.println(Adder.add(11, 11));

        System.out.println(a1.add(11, 11, 51));

    }
}
Run Code Online (Sandbox Code Playgroud)

我读了一些文章,但他们没有澄清我的问题。

java overloading

5
推荐指数
1
解决办法
4592
查看次数