覆盖静态方法和多态

时间:2018-06-18 09:43:04

标签: java polymorphism override static-methods

我在某处读到覆盖 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使用相同的ClassLetters继承static void classM。为什么不是多态?

1 个答案:

答案 0 :(得分:3)

您无法覆盖静态成员,因为它们不会被继承。他们属于阶级本身,时期。

如果您创建了一个子类,并且创建了一个具有相同名称/参数/的(新)静态方法,则不要覆盖原始方法,而是重新定义一个新方法。

因此,原始类中的静态方法不会被覆盖,而是被隐藏。