总结创建子类时是否创建父类
来源:互联网 发布:产品上淘宝要什么手续 编辑:程序博客网 时间:2024/06/05 02:33
更正:不好意思,我又试验了一下,super并不能引用子类成员方法,修改如下:
根据我的理解,首先说一下对象的构造过程:
1.首先从根类到直接父类依次执行父类的构造方法(没有显示调用构造方法的情况下),这个过程执行父类成员的初始化。
2.最后调用本类的构造方法。
以上两步的结果是创建了本类对象,这个对象如图:
从图中可知,压根没有父类对象,只有子类对象,而且this完全引用这个对象,super只是引用了这个对象中从父类继承来的成员,也就是说,除了super不能访问子类定义的成员之外,super和this是同一个对象,这可以通过toString()方法验证(如果子类没有重写toString()方法,则调用父类的该方法,如果父类没有,再找父类的父类,直到Object的toString()方法)。
Object类toString方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass 和 getName 都是Object类的方法。
总之,没有super这个对象,他只是引用了子类对象的一部分数据,所有无法输出super。
那么为什么能输出super.toString()呢,原因在前面图中,这个调用过程是先试图调用从子类对象中直接父类继承的toString方法(注意:super.toString()是显式调用),如果没有则向上追述知道Object。
根据我的理解,首先说一下对象的构造过程:
1.首先从根类到直接父类依次执行父类的构造方法(没有显示调用构造方法的情况下),这个过程执行父类成员的初始化。
2.最后调用本类的构造方法。
以上两步的结果是创建了本类对象,这个对象如图:
从图中可知,压根没有父类对象,只有子类对象,而且this完全引用这个对象,super只是引用了这个对象中从父类继承来的成员,也就是说,除了super不能访问子类定义的成员之外,super和this是同一个对象,这可以通过toString()方法验证(如果子类没有重写toString()方法,则调用父类的该方法,如果父类没有,再找父类的父类,直到Object的toString()方法)。
Object类toString方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass 和 getName 都是Object类的方法。
总之,没有super这个对象,他只是引用了子类对象的一部分数据,所有无法输出super。
那么为什么能输出super.toString()呢,原因在前面图中,这个调用过程是先试图调用从子类对象中直接父类继承的toString方法(注意:super.toString()是显式调用),如果没有则向上追述知道Object。
0 0
- 总结创建子类时是否创建父类
- JAVA中关于new子类对象时是否创建父类
- 关于创建子类对象的时候是否为父类的私有变量分配了内存
- New一个子类对象的时候是否创建了父类的对象
- 创建子类student继承父类person
- java中创建子类对象时总是会先创建其父类对象
- [Ruby] 创建ActiveRecord的子类总结
- GCD是否创建线程总结
- 静态变量、实例变量初始化时机,以及子类隐藏父类成员时,创建子类对象的一些问题
- 创建子类对象调用父类构造器
- java子类创建时会首先构造父类
- 创建继承于父类Person的子类Studen
- 创建FileGeodatabase,创建要素类,创建域对象,创建子类,创建要素
- 子类创建对象时内存分配解析
- 创建QTableWidgetItem子类
- 创建QTableWidgetItem子类
- javascript创建子类
- 子类创建对象
- spring cloud微服务框架第五天
- MongoDB 数据导出mongoexport
- 菜鸟级的Git与GitHub使用总结
- C++ primer习题3.17
- 关于LINUX中的权限位S(设置用户ID)(有效用户ID)(实际用户ID)
- 总结创建子类时是否创建父类
- edittext 只支持数字键
- 关于使用IAR的一些技巧
- Java中使用poi导入、导出Excel
- 使用MongoDB命令连接远程服务器的MongoDB数据库
- C++常见编程错误
- 快速排序详解
- Android 自定义adapter(一)
- QQ分享