导航:首页 > 创造发明 > 创造子类对象后发生了什么

创造子类对象后发生了什么

发布时间:2021-12-05 22:31:56

1. 创建子类的对象时是不是也同时创建了父类对象啊

只创建子类对象,
子类对象包括两个部分,
自己特有的属性和方法+从父类继承来的属性和方法.

2. 有个疑问生成子类对象没有生成父类对象,那么super指向的父类对象是什么时候生成的

我用非标准的语言来说一下:
当一个子类对象生成时,其内部是包含一个父类对象的,但是对于父类对象的私有部分,子类对象不可访问。

3. Java中创建一个子类对象,强制把它转换成父类定义为一个新的父类对象,那么这个强制转换了的对象

算,不是强制,而知这种转化肯定成功。
当把子类对象赋给父类引用对象时,被称为向上转型,这种转型总是可以成功的,这也从另一个侧面证实了子类是一种特殊的父类。这种转型只是表明这个引用变量编译时类型是父类,但实际执行它的方法时,依然表现出子类对象的行为方式。

4. java中,创建子类对象时,父类对象会也被一起创建么

父类的构造函数会执行,但是不会创建父类对象

5. 新建父类引用到子类对象实现子类转换为父类类型后,子类对象所拥有的父类没有的属性是否会消失

这个不会消失,但是父类看不到子类的属性,也就是说调用不到的。
但是如果你把 个由子类转换来的父类引用交给一个子类时,属性就可以调用了。
如:
// Child有一个父类没有的属性x
Child c = new Child();
Parent p = c;
System.out.println(p.x); //这里在编译时会报错,因为对Parent类来说,是没有x这个属性的。
Child cc = p;
System.out.println(cc.x); // 转换回来后,可以正常调用并且得到值。

关于地址的问题。因为赋值操作都是把地址交给不同的变量,只是变量的指向变化了,而地址是没有发生改变的。

6. 为什么在创建子类对象的时候会调用父类的构造函数

对象自己就是一个父类对象。除非是对象的构造方法里创建了父类对象,否则没有创建父类对象。

7. C++中,创建子类对象时,是否已经创建了一个无名父类对象

额。。楼主适合当哲学家。但是实际上区分到底是包含还是并列并没有实际意义。
所谓的继承只不过是strousp大大定义的一种抽象的概念,具体怎么实现的根据编译器而定。甚至即便是编译器也未必清楚的采用了无名对象亦或是同名对象。反正当一个新的子类对象初始化时,系统会根据它和它的父对象初始化它。
不过在有些情况下把他按照无名对象理解确实可以,比如说在私有继承或保护继承时。
class son :private father son a; 这是其父类的表现更像是son的一个成员变量,也就是你所说的包含而不是融合。

这样的回答满意吗?

8. java中创建子类对象的过程

如果实例化的类有父类存在,则:
在第一次进行子类实例化时,执行顺序为:
初始化父类静态 成员变量、子类静态成员变量、父类非静态成员变量、父类 构造函数、子类非静态成员变量、子类构造函数;
如果不是第一次进行实例化,则执行顺序为:
父类非静态成 员变量、父类构造函数、子类非静态成员变量、子类构造函 数

9. 子类对象的实例化过程

对于许多Java老手来说,子类对象的实例化过程也不见得非常清楚,你可能并不需要完全了解子类对象的实例化过程,但了解后还是有好处的。对象中的成员变量的初始化是按下述步骤进行的:1).分配成员变量的存储空间并进行默认的初始化,就是用new关键字产生对象后,对类中的成员变量按第三章的表3.1中的对应关系对对象中的成员变量进行初始化赋值。2).绑定构造方法参数,就是new Person(实际参数列表)中所传递进的参数赋值给构造方法中的形式参数变量。3).如有this()调用,则调用相应的重载构造方法(被调用的重载构造方法又从步骤2开始执行这些流程),被调用的重载构造方法的执行流程结束后,回到当前构造方法,当前构造方法直接跳转到步骤6执行。4).显式或隐式追溯调用父类的构造方法(一直到Object类为止,Object是所有Java类的最顶层父类,在本章后面部分有详细讲解),父类的构造方法又从步骤2开始对父类执行这些流程,父类的构造方法的执行流程结束后,回到当前构造方法,当前构造方法继续往下执行。5).进行实例变量的显式初始化操作,也就是执行在定义成员变量时就对其进行赋值的语句,如:public Student extends Person{String school = ”it315”;// 显式初始化……}将“it315”赋值给school成员变量。6).执行当前构造方法的方法体中的程序代码,如public Student extends Person{public Student(String name,int age,String school){super(name,age);this.school=school;}}这一步将执行this.school=school;这条语句,其中用到的super()或this()方法调用语句已在前面的步骤中执行过,这里就不再执行了。注意区别刚才所说的this()方法调用语句与this.school=school的区别,前者指调用其他的构造方法,后者是一个普通的赋值语句。为了便于读者直观地看到子类对象的实例化过程,我将上面的流程用图4.1进行了重复描述。图4.1回过头来想一想:1).为什么super(…)和this(…)调用语句不能同时在一个构造函数中出现?2).为什么super(…)或this(…)调用语句只能作为构造函数中的第一句出现?对照对象初始化实例变量过程,我们就发现这两种情况都违背上面的过程,所以读者应该明白上面两个问题的原因了。

10. 高人,java中,在创建子类的对象时,是不是同时也创建了一个对应的父类的对象

这个应该是没有的,只是子类继承了父类的成员变量和方法,所以生成子类的对象时就可以直接引用父类的变量和方法了。还有就是也可以用一下向上转型,那么就可以生成一个父类的引用和子类的对象。

阅读全文

与创造子类对象后发生了什么相关的资料

热点内容
中国科学院无形资产管理办法 浏览:67
注册资本金认缴期限 浏览:828
申请商标到哪个部门 浏览:762
购买无形资产的相关税费可以抵扣吗 浏览:982
商标注册被骗怎么办 浏览:160
朗太书体版权 浏览:268
大学无形资产管理制度 浏览:680
马鞍山向山镇党委书记 浏览:934
服务创造价值疏风 浏览:788
工商登记代名协议 浏览:866
2015年基本公共卫生服务项目试卷 浏览:985
创造营陈卓璇 浏览:905
安徽职称计算机证书查询 浏览:680
卫生院公共卫生服务会议记录 浏览:104
泉州文博知识产权 浏览:348
公共卫生服务培训会议小结 浏览:159
马鞍山揽山别院价格 浏览:56
施工索赔有效期 浏览:153
矛盾纠纷交办单 浏览:447
2010年公需课知识产权法基础与实务答案 浏览:391