最近学的java对父类引用指向子类对象不是很了解他们在内存中的机制。如果父类对象和子类对象有相同名字的一个属性。
和下面中的一样,A bNext = new B();在栈空间生成了一个A的引用b,指向堆空间中new出来的B对象。如果不同的引用,得到的结果会不一样。希望大神能讲下为什么指向的是一个相同的对像为什么父类引用会使用被隐藏的父类属性,子类引用会使用子类的属性
public class A { int a=100; public static void main(String[] args) { B bFirst = new B(); A bNext = new B(); System.out.println(bFirst.a+" "+bNext.a); } } class B extends A{ int a = 0; }
这个如果通看main方法所生成的字节码就很清楚了