静态修饰的变量和方法存在方法区,类一旦被加载就会固定存在
如果子类继承父类静态的方法不能被子类覆盖。
例如
- class A{
- static int num=3;
- public static void a(){
- System.out.println("a");
- }
- }
- class B extends A{
- static int num=4;
- public static void a(){
- System.out.println("b");
- }
- }
- public class Test1 {
- public static void main(String[] args) {
- A a = new B();
- a.a();
- System.out.println(a.num);
- }}
复制代码
这段代码,方法a(),如有静态修饰,输出的是父类的内容,如果没有静态修饰,输出的是子类的内容
那为什么a.num不管有没有静态修饰,输出的都是父类的变量值呢 |
|