JAVA中子类调用父类带参的构造方法时修改了父类的成员变量,但父类的成员变量没有变化?

2025-02-05 20:02:24
推荐回答(2个)
回答1:

这是内存空间分配的问题,你的主方法中类型+变量名表示在堆栈中开辟一个空间,new代表在堆中开辟空间放在内存池中。一个引用绑定一个堆空间,你的主方法中 第一步开辟空间建立绑定机制,这个a1就代表了堆中的a的值为9,你用B的构造方法调用A中的构造方法,由于存储的是基本数据类型,它会直接放在栈中,那么你的第二次打印依旧绑定在new空间中的。你可以在a前加个静态static那么他就会存放在常量存储器中,就会打印出来3;

回答2:

大哥你看清楚了,两个对象都不一样,B b=new B(3,5)的意思是创建一个对象b,刚才创建了一个对象a1,所以b.a=8,a1对象不变还是9,若是把 A c=b;那么这时c.a=?呢,其实c.a=3;明白了吗?属性的静态绑定,和方法的动态绑定去复习下吧!