Java中继承问题
扩展类采用extends关键字引用超类进行继承的时候,会动态加载超类的构造函数,那么请问这个时候是否创建了超类的实例?
昨天在贴吧看到一个这个问题,大部分人认为会创建对象实例,但是并不是这样的,首先大家都知道如果构造函数被加载,那么必定会创建对象实例,这种理解确实是正确的,但是创建对象只有一种方式就是采用new关键字创建,采用new关键字创建以后,会返回对象引用,该引用所指向的就是存放于堆内存(heap)中的目标对象的地址,地址中所存放的就是目标对象的对象实例。扩展类采用extends关键字引用超类进行继承,并且可以加载父类的构造函数,以及可以调用超类的所有非私有类成员,这并不是说是将超类进行了创建,仅仅只是使用的super对超类的类成员进行了引用。堆内存中(heap)其实并无超类的对象实例。你们试想一下,内存不是无限的,如果随意调用一个扩展类,并且这个扩展类拥有过多且复杂的多重继承,那么这样是否会将所有扩展类的超类都按照派生顺序全部创建对象实例?这是不可能的。所以希望大家加强对Java基础的理解。