要去看看static的用法了哦
static修饰的变量为静态变量,全局唯一,所以new B()的时候s就自增1了,new A()的时候再一次自增1就等于2了
s是静态变量,处于全局数据区,所有对象共享类的静态成员变量,a1和a2实例化时都会调用A的构造方法
static 修饰 只会加载一次 初始为0 当 new B()的时候 调用B的构造方法 默认会调用父类构造方法 即 A.s= s+1 = 1 ; a1.a=0+1=1;
new A() 时A.s = s+1 = 1+1 = 2 a2.a = 0+1=1
s变量是static修饰的程序只会加载一次,new B的时候s = 1, new A的时候又执行了一次 s = 1 + 1
static修饰的成员变量,会在类加载中执行,存储在方法区里,类加载完成后,s即是0,当你根据A的类对象去创建对象时,只会对a变量进行重新定义为0,我们可以利用static的这一特性,去查看我们执行的程序中A对象到底被创建了多少次。建议你再去看看static的相关知识,static修饰的变量和方法是在类加载的时候执行的。
static修饰的变量是静态变量,整个内存中只有一份,所有类共用,相当于教室只有一个黑板,大家都可以在上面修改东西,每个人修改都会生效
int a是成员变量,和类绑定的,只对当前类有效,相当于每个人的笔记本作业本,你改你的作业本,我改我的作业本,大家互不影响
另外一个就是子类B在执行构造方法的时候,会先执行父类的构造方法,没得爸爸就没得儿子