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
继承ClassLetters
与static void classM
相同。为什么不是多态性
# 1 楼答案
不能覆盖静态成员,因为它们不是继承的。他们属于班级本身,句号
如果您创建了一个子类,并且创建了一个(新的)静态方法,该方法具有相同的名称/参数/。。。你没有覆盖原来的一个,你重新定义了一个新的
因此,原始类中的静态方法不会被重写,而是被隐藏