Java学习之路--静态成员的继承问题

看两段代码:

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);
}
}

/**
* 输出结果:
* 白猫
* 黑猫
*/

这段代码表明,虽然静态成员可以被继承,但是和子类的同名静态方法并不构成重写关系,子类的同名静态方法会将父类同名静态方法隐藏,因此也不支持多态。

文章作者: GeYu
文章链接: https://nuistgy.github.io/2022/11/15/Java学习之路(42)/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yu's Blog