看两段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class ExtendsDemo { public static void main(String[] args) { Cat c = new Cat(); c.test(); } }
class Cat extends Animal{}
class Animal{ public static String schoolName ="黑猫"; public static void test(){ System.out.println(schoolName); } }
|
这段代码表明静态的父类成员依旧是可以被继承到子类的,否则不可能通过子类引用访问到这个静态的父类方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class ExtendsDemo { public static void main(String[] args) { Cat c = new Cat(); Animal a = new Cat();
c.test(); a.test();
} }
class Cat extends Animal{ public static String schoolName = "白猫"; public static void test(){ System.out.println(schoolName); } }
class Animal{ public static String schoolName ="黑猫"; public static void test(){ System.out.println(schoolName); } }
|
这段代码表明,虽然静态成员可以被继承,但是和子类的同名静态方法并不构成重写关系,子类的同名静态方法会将父类同名静态方法隐藏,因此也不支持多态。