java - 类方法继承

标签 java inheritance static oop class-method

我被告知 java 中的静态方法没有继承,但是当我尝试以下测试时

package test1;

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        TB.ttt();
        TB.ttt2();
    }

}

package test1;

public class TA {
static public Boolean ttt()
{
    System.out.println("TestInheritenceA");
    return true;
}
static public String test ="ClassA";
}

package test1;

public class TB extends TA{
static public void ttt2(){
    System.out.println(test);
    }
}

它打印了:

测试继承A A类

java 静态方法(和字段)也具有继承性(如果您尝试调用类方法,它会沿着继承链寻找类方法)。以前不是这样吗?有没有像类方法那样困惑的继承 OO 语言?


所以显然静态方法是继承的但不能被覆盖,那么 c# 是否也有这个问题?会其他语言吗?

最佳答案

在 Java 中,字段和静态方法是继承的,但不能被覆盖——我相信这就是告诉你“它们不是继承的”的人的意思。

非私有(private)、非静态方法是继承的,可以被覆盖。

关于java - 类方法继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3044827/

相关文章:

java - 当我使用 || 时,我的 boolean 值评估为 FALSE OR 或 JAVA 中的 && 和

java - Equals for extended object 想要检查 super.equals(),如果我不想要这个检查,这应该是组合而不是继承

java - 在java中如何扩展接口(interface)的实现?

c++ - 为什么我们不能使用指向派生类的指针访问 protected 基类成员?

rust - 重新分配函数体内的静态项

java - 挂信计划

java - 安装 Project Lombok 后处理 RealmObject 后代时出错

java - 如何使用java从 cucumber 中的场景大纲中获取场景名称

C 语言 - 结构声明和内部静态成员

java - main 方法在枚举和类中的工作方式是否不同?