当前位置:编程学习 > JAVA >>

关于Java中子类和父类

调用子类的构造方法创建一个子类的对象时,同时子类的构造方法中调用了父类的构造方法,是不是创建子类的一个对象时同时也创建了一个父类对象? --------------------编程问答-------------------- 就只有子类一个对象啊,之所以会使用super来调用父类的构造方法,那是在初始化
父类的同时,实际也是在构建子类。 --------------------编程问答-------------------- 那就看你怎么理解了,从内存分配的角度来说,确实也分类了父类对象的内存
也就是说子类对象的内存是在父类对象的内存的基础上再扩展的
但是对外表现只有子类对象一个
--------------------编程问答-------------------- 像二楼说的一样,同时创建了两个对象,但是子类的对象,是在父类对象创建的基础上扩展的。如果我们需要可以将其向上转型成为父类的对象,这样的问题应该从内存分配的方面考虑 --------------------编程问答--------------------
引用 2 楼 qybao 的回复:
那就看你怎么理解了,从内存分配的角度来说,确实也分类了父类对象的内存
也就是说子类对象的内存是在父类对象的内存的基础上再扩展的
但是对外表现只有子类对象一个

表层上 确实只有子类对象
从内存上 也有父类的内存
《深入JVM》看完之后,会发觉有的东西的答案并不是唯一性,理解角度不同
得到的结果也不一样 --------------------编程问答-------------------- 在子类的构造函数  super()     可以调用父类 --------------------编程问答-------------------- 父类不存在子类就不存在,所以是先构造父类再去构造子类。在面向对象的语言中,所有语言都是先有父再有子。object类是万物之源。。。。不管是java还是c#无一例外! --------------------编程问答-------------------- 既然子类是从父类继承的,而父类对象是由其构造方法创建的,先有的爸爸,才有儿子,所以先造爸爸,再造儿子,在内存中实际上是,相当于儿子是在爸爸基础上创造的,并有了拓展,所以是造出的爸爸包含在儿子的对象里的,即在儿子所造对象所占的内存中放爸爸对象,爸爸是构成儿子的一部分 --------------------编程问答-------------------- 只有一个子类对象,但是子类对象中的成员变量包含父类对象[img=http://hi.csdn.net/space-9742571-do-album-picid-936505.html][/img] --------------------编程问答-------------------- --------------------编程问答-------------------- 构造方法是用来初始化一个类的,子类想要初始化那么它必须要初始化父类(老爹都没有哪来的儿子),因为子类要继承父类的元素等,所以会先初始化父类的属性,并且会调用父类的构造方法 --------------------编程问答-------------------- java 中规定,子类构造方法在对新添加的成员变量执行初始化之前,都将显式的(通过super)或隐式的(调用父类的默认的构造方法或无参数的构造方法) 调用其直接父类的构造方法,同样,如果其直接父类也派生于另外一个类(假设为A),则要求其直接父类调用A的构造方法,以此类推,最后调用的总是根类object的构造方法
 
既然是继承,那么自然也会继承 父类 的成员变量,我个人认为,子类在使用构造方法时(构造方法是对变量进行初始化的),系统不知道你会对新增加的变量还是从父类继承来的变量进行初始化,而要想对父类的对象进行初始化,是要用到父类的构造方法的,所以会隐式的调用父类的默认构造方法。

至于你说的是不是创建了两个对象,没有考虑过,顶一下,希望知道的人解析一下~
补充:Java ,  Eclipse
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,