有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重写静态方法和多态性

我在某个地方读到,覆盖一个static方法可以被视为多态性。只是隐藏方法。“隐藏”是什么意思


public class TesterClass {
    public static void main(String[] args) {
        ClassLetters.staticM();
        ClassA.staticM();

        ClassLetters Lettersobj = new ClassA();
        ClassA Aobj = new ClassA();


        Lettersobj.staticM();
        Aobj.staticM();
        ClassA aa = (ClassA) Lettersobj;
        aa.staticM();
    }
}

输出:

Static Method Called in CLassLetters
Static Method Called in ClassA
Static Method Called in CLassLetters
Static Method Called in ClassA
Static Method Called in ClassA

classA继承ClassLettersstatic void classM相同。为什么不是多态性


共 (1) 个答案

  1. # 1 楼答案

    不能覆盖静态成员,因为它们不是继承的。他们属于班级本身,句号

    如果您创建了一个子类,并且创建了一个(新的)静态方法,该方法具有相同的名称/参数/。。。你没有覆盖原来的一个,你重新定义了一个新的

    因此,原始类中的静态方法不会被重写,而是被隐藏