时间:2021-05-19
一、背景:
存在类Father和类Son,其中类Son继承了Father类。
1.父类Father代码
2.子类Son代码
*初始化包括?
成员变量赋初值、代码块、构造器
注意方法是被调用的,有人调用它它才执行相应的东西。
二、类初始化
在一开始,注释掉main方法中的代码,执行结果如下。
类初始化:
1.创建实例需要先加载并初始化该类
此处main方法所在的类需要先加载并初始化
2.子类初始化要先初始化其父类
3.类初始化即是执行clinit(ClassInit)方法
A.(静态!)分为 静态变量的显式赋值操作 和 静态代码块
B.上到下的顺序执行
C.这个clinit方法只执行一次
将父类中的static代码块放到静态变量之前,可以看到结果按顺序改变。
三、实例初始化
取消Son类中main方法的第一句注释,如下图所示。
此时将会先进行类初始化,再进行实例初始化,结果如下。
实例初始化:
1.实例初始化即是执行init方法
2.有几个构造器就有几个init方法,每次创建对象都会执行相应的init方法。
3.init方法由非静态实例变量显式赋值、非静态代码块和相应的构造器组成。
4.非静态实例变量赋值与非静态代码块按上到下的顺序执行,构造器在最后执行。
5.init方法的首行是super()或者带参数的super(),即父类init方法。
父类中的test()方法输出的是(4),为何父类中结果为932?
非静态方法前有一个默认的对象this
this在构造器(或者init方法)表示的是正在创建的对象。
这里是在创建Son类的对象,所以执行的是重写后的代码。
四、总结
初始化操作包括成员变量、静态/非静态代码块和构造器。
1.先类初始化,再实例初始化。
2.都是先父类再子类。
3.类初始化关键词"静态"。
4.实例初始化关键词"非静态",构造器在最后。
5.注意构造器和实例初始化init方法中的this对象。
五、补充
哪些方法不能被重写?
多态性的体现?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
初始化类,结构和枚举当Swift声明后准备初始化类实例。初始值被初始化为存储属性,并且新的实例的值也被进一步进行初始化。创建初始化函数的关键字是通过init()
Java中初始化块详解在Java中,有两种初始化块:静态初始化块和非静态初始化块.静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块
以Java实例变量初始化为例,实例变量需要初始化。一旦一个类被加载连接初始化,他就可以随时被使用了,程序可以访问他的静态字段,调用静态方法,或者创建它的实例。在
一、类的初始化对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量。类的编译决定了类的初始化过程。编译器生成的class文件主要对定义
Java中数组初始化和OC其实是一样的,分为动态初始化和静态初始化,动态初始化:指定长度,由系统给出初始化值静态初始化:给出初始化值,由系统给出长度在我们使用数