当前位置:首页 > 开发 > 编程语言 > Java > 正文

Java在创建子类对象的同时会不会创建父类对象

发表于: 2015-07-19   作者:happyqing   来源:转载   浏览:
摘要:   1.在thingking in java 的第四版第六章中明确的说了,子类对象中封装了父类对象,   2."When you create an object of the derived class, it contains within it a subobject of the base class. This subobject is the sam

 

1.在thingking in java 的第四版第六章中明确的说了,子类对象中封装了父类对象,

 

2."When you create an object of the derived class, it contains within it a subobject of the base class. This subobject is the same as if you had created an object of the base class by itself. It’s just that from the outside, the subobject of the base class is wrapped within the derived-class object."
这里说派生类拥有一个父类的亚对象(subobject),是指派生类的对象中的一部分与父类对象是相同的。这个亚对象不是一个实际的对象,是无法独立于派生类对象之外的。

 

3.子类在创建实例后,类初始化方法会调用父类的初始化方法(除了java.lang.Object类,因为java.lang.Object类没有父类),而这种调用会逐级追述,直到java.lang.Object的初始化方法。
这个地方是初始化方法,而不是构造方法,因为构造方法是相对于java源程序而言,而编译后的class文件是初始化方法即" <init>"方法,初始化方法由java源程序的三个部分组成的,一个部分是成员字段后的直接的初始化语句,例如private int i=0;,第二个部分是由初始化块组成,例如:public class Test{ { this.i=4; \\do something...... } }
第三个部分就是java源代码中的构造方法中的代码,java源代码中有几个构造方法,那么class文件中就有几个初始化方法,编译器会把第一部分与第二部分分别复制到每个初始化方法的前端,然后把初始化方法对应参数的构造方法的代码复制到相应初始化方法中
调用初始化方法并不会生成对象
想象你的父类是一个抽象类,那么抽象类又如何能够产生对象呢

 

(对象的创建就是根据在堆上有没有开辟实例域的数据空间)

Java在创建子类对象的同时会不会创建父类对象

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
之前在项目中碰到这样一个问题:   类B继承了类A,B在实例化的时候,A的构造方法中调用了B的某个
抽象类:具有抽象方法的类,需要使用abstract关键字修饰 关系图 下面上代码 package com.ray.testob
抽象类:具有抽象方法的类,需要使用abstract关键字修饰 关系图 下面上代码 package com.ray.testob
例如: 有以下2个类 public class Father { public int age = 70; public static string name = "父
1.创建一个父类,在父类方法中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将他向
类的创建 class Person{ String name = null; int age; public void tell() { System.out.println("
在本地方法实现代码中创建java对象,其中还主要涉及到jni和java之间中文字符串的的乱码问题。 1.创
自ActionScript 3开始,eval函数就被取消了,这样就不能像原来那样利用字符串动态的创建对象了,但
自ActionScript 3开始,eval函数就被取消了,这样就不能像原来那样利用字符串动态的创建对象了,但
自ActionScript 3开始,eval函数就被取消了,这样就不能像原来那样利用字符串动态的创建对象了,但
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号