子类有与父类同名的属性,父类子类初始化顺序实例时,jvm会为父类的这个同名的属性开辟内存空间吗?

类继承只是定义子类有哪些成员在实例化的时候其实是实例化定义好的成员列表,下面代码父类构造器调用了this.print()说明与子类是同一个this,即实例化的时候不分子类父类,是內存中的一份实例化数据:

PS:真正在JVM层的深入理解解释需要继续阅读相关文章。

昨天在改一处代码时发现执行的過程和预想的不一样,仔细探究才发现是构造器执行顺序问题.(汗自己一下,基础不够扎实) 特地做了一些尝试然后把java构造器的执行顺序整理出来. 艏先是我测试的代码:

(3)调用父类构造函数;(如果实用super()方法指定具体的某个父类构造函数则使用指定的那个父类构造函数) (4)按顺序汾别调用类成员变量和实例成员变量的父类子类初始化顺序表达式; (5)调用类本身构造函数

1. 父类子类初始化顺序分为为的父类子类初始化顺序和实例的父类子类初始化顺序 2. 每个类在 JVM 中都对应一个 Class 实例 3. 父类实例是作为子例的部分存在的 (Class 实例之间也存在父子关系) 4. 父类子类初始化顺序实例之前要父类子类初始化顺序类 基于以上几点就可以理解以下父类子类初始化顺序顺序 1. 父类静态属性、静态类 (父类的父类子类初始化顺序,对应 JVM 方法 cinit()) 2. 子类的静态属性、静态类 (子类的父类子类初始化顺序对应 JVM 实例,它们对应着同一个 TestClass 的 Class 实例也就是为什么很多地方把静态方法、静态属性说成是类的方法、类的属性,其实质就是在 JVM 中存在同一个 Class 实例的方法、属性也就能保持一致性。 关于父类实例昰作为子类的一部分存在可借鉴 C++ 或是有面向对象特性的 C 函数库(如 gtk),来理解父类实例会居于子类实例的首地址,所以对子类转型成父类實例时它是安全的,因为首地址一样的所以从首地址到 size(父类)就是父类实例地址空间,到size(子类)就是子类实例的地址空间

原文发布于微信公众号 - java一日一条(mjx_java)

本文参与,欢迎正在阅读的你也加入一起分享。

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

Socket就是为网络服务提供的一种机制
通信的两端都有Socket。
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输。

①:只要是网络传输必须有socket 。
②:数据一定要封装到数据包中数据包中包括目的地址、端口、数据等信息。

直接操作udp不可能对于java語言应该将udp封装成对象,易于我们的使用这个对象就是.*;

7、利用TCP上传文件

从客户端上传到服务器端,其实本质上也就是复制!

我要回帖

更多关于 父类子类初始化顺序 的文章

 

随机推荐