java子类继承父类实际_java子类继承父类,是否生成父类对象?
从根本上来说,对象就是一个特殊结构的内存以及可以访问这块内存的代码。所以你这个问题其实就是一个到底如何看什么是对象的。
我不了解现在jvm的具体实现,所以只能就理论上进行下分析。
由于现代的编译器都可以对内存及其访问进行优化,所以,如果当子类增加了新的属性:
比如父类是一个字节和一个整数,子类又增加了一个字节和一个整数
而编译器对子类内存数据的位置进行了调整的话,那在逻辑层面上结构没有变化,但物理层面上,访问各项数据的地址可能就发生了变化。
而在子类初始化时是先统一分配内存,然后先调用父类的初始化器,再调用自己的初始化器的,而如果编译器调整了子类中父类那部分数据的地址的话,则子类所调用的父类初始化器其实是原本父类初始化器的一个多态函数(因为在物理层面上数据的访问地址发生了变化,所以访问的以及是一个新的数据结构了),实质上和原始的父类初始化器是两个函数。
这样的话,从子类来看,其父类的数据及初始化器都发生了变化,这个父对象和真正的父类的对象也就只具有逻辑上的等价性了。
所以这个问题,在逻辑上肯定是先要生成并初始化一个父对象,然后再增加自己的扩展并适当修改父类的行为,这本就是OOP的基本思想。但在物理层面上,则是根据实际情况由编译器自行决定。
因为现代程序技术(同样也是IT、甚至是整个工程技术领域)的核心思想就是自己管好自己的事,其他人只和我们通过接口/API进行契约,怎么干那是他的事,所以这个问题其实就是要看你站在哪边了,如果是研究编译器的,那肯定是没有生成父对象,如果只是用编译器进行编程,那就一定是先生成父对象,然后再进行扩展和修改
这个思想就是我们常说的透明性,跨过边界多了解点对方是如何工作的,有助于我们理解对方所提出的契约要求,这会帮助双方更好的配合工作,但你的重心是一定要先搞定自己一侧的东东,所以你的问题其实是没有深刻的理解到底什么是面对对象技术。
java子类继承父类实际_java子类继承父类,是否生成父类对象?相关推荐
- java子类继承父类实例_Java子类继承父类详解
别和我说你真的懂了继承,先来看下面的代码,回答出我的问题再说 代码很简单,如下: 父类: public class T { public void run() { System.out.println ...
- java 子类 父类 转换_Java子类与父类之间的类型转换
1.向上转换 父类的引用变量指向子类变量时,子类对象向父类对象向上转换.从子类向父类的转换不需要什么限制,只需直接蒋子类实例赋值给父类变量即可,这也是Java中多态的实现机制. 2.向下转换 在父类变 ...
- java 调用父级方法_java子类调用父类的方法是什么
java子类调用父类的方法:1.子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找:2.如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找 ...
- java 继承接口语法_java的继承、接口方面的语法及知识
继承(inheritance):一个类只能继承一个类 代码复用 继承的语法: class ChildClass extends ParentsClass{ } 父类的属性子类中都存在,只是有没有权限访 ...
- java继承类大全_Java 面向对象继承部分(示例代码)
被继承的类称为父类(超类),继承父类的类称为子类(派生类) 通过继承可以实现代码重用 子类拥有父类非 private 的属性.方法. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展. 子类可以 ...
- java继承circle类_java的继承
我总是记不住继承是怎么个机制,今天我来彻底的总结一下. 先了解一下初始化的顺序 当程序执行时,需要生成某个类的对象,java执行引擎会先检查是否加载了这个类,如果没有加载,则先执行类的加载再生成对象, ...
- Java怎么用继承回复信息_JAVA面向对象-继承
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java继承: 1.继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个对象获取属性的过程. 2.如果类 ...
- java继承和多态_Java基础继承与多态
Java基础第九天 继承概述 引入 首先我来写两个代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15//定义学生类 class Student { public void ...
- java 继承的好处_java关于继承的好处
继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父 ...
最新文章
- 2018 年 ACM-ICPC 焦作站现场赛感受
- IDEA 真牛逼,900行 又臭又长 的类重构,几分钟搞定
- python分糖果_分糖果_平安科技笔试题_牛客网
- 枚举类型和各种类型之间转换
- python单元测试工具_Python的单元测试工具——unittest小结
- mvc:annotation-driven/
- 【数据结构与算法】之深入解析“字符串相乘”的求解思路与算法示例
- 纯CSS打造的Family tree(族谱)
- ios进度条Demo一个
- storm计数器(小白看懂系列)
- 北京小学 计算机派位,北京小升初电脑派位原理详解!和对口直升入学有什么区别?...
- VIM 查找替换命令的使用
- 【系统自启动】使用windows自带工具管理开机启动项
- 韩顺平 java笔记 第3讲 运算符 流程控制
- Win7 32bit 扫雷外挂
- 二维vector初始化,赋值
- tamura纹理特征 JAVA_tamura纹理特征算法
- 最好用的三款电脑端epub阅读器
- 区块链学习2——区块链浏览器的搭建
- Altium Designer 19 错误警告 Design contains shelved or modified (but not repoured) polygons
热门文章
- 羽毛球 机器人 Robocon 2015 泰国预选赛(全国大学生机器人竞赛)
- Java 中实现定时服务 在ssh框架中跟普通工程里面创建的方式
- Be My Eyes app:我是你的眼
- ctype.h,ctype.c 结构分析 \linux-1.0\linux\include\linux\ctype
- Epoll例子的使用
- 如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart?
- CPropertySheet 与CPropertyPage 的基本使用
- 数组的合并和升序排列_leetcode 33 搜索旋转排序数组
- 单片机实现环形队列_稀疏数组和队列(二)
- 【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵