java - 为什么我的静态 block 允许在不使用父类引用的情况下调用父类静态方法?

标签 java static-methods static-block

<分区>

据我了解,通常应该使用类的引用调用静态方法,或者如果它在静态方法或静态 block 中,则可以直接调用而无需引用。

但是当从子类静态 block 调用静态方法时,这是否适用?

为什么它允许这样的事情,因为静态方法不是继承的,它应该只允许使用父类名称吗?

public abstract class abs {

    /**
     * @param args
     */
    abstract void m();
    static void n(){
        System.out.println("satic method");
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}
class myclass extends abs{

    @Override
    void m() {
        // TODO Auto-generated method stub

    }
    static{
        n();
    }
}

为什么我的子类静态 block 可以在没有引用或类名的情况下调用父类静态方法?

最佳答案

静态方法 n()被子类继承myclass ,所以你可以直接在myclass的静态 block 中调用它.

关于java - 为什么我的静态 block 允许在不使用父类引用的情况下调用父类静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49476975/

相关文章:

java - 谷歌应用引擎 : Separating test and production version of cloud endpoints

c - 静态函数内的变量是静态变量吗?

java - 枚举 - 静态和实例 block

java - 为什么 C++ 允许直接从子类中调用祖父类方法?

java - Full GC 频繁发生

java - 当标签没有换行符时,如何从 html 中获取正确格式的文本

java - 静态方法重新定义规则

Java:在子类中使用父类的静态方法

java - 进入main方法后执行的静态 block

Java:静态 block 中的静态最终字符串填充会导致NoClassDefFoundError