我在某处读到覆盖 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
。为什么不是多态?
答案 0 :(得分:3)
您无法覆盖静态成员,因为它们不会被继承。他们属于阶级本身,时期。
如果您创建了一个子类,并且创建了一个具有相同名称/参数/的(新)静态方法,则不要覆盖原始方法,而是重新定义一个新方法。
因此,原始类中的静态方法不会被覆盖,而是被隐藏。