JavaSE8基础 子类初始化时有 父子类分层初始化的特点



os :windows7 x64
    jdk:jdk-8u131-windows-x64
    ide:Eclipse Oxygen Release (4.7.0)

代码:

/*	

	A:一个类的初始化过程
			成员变量的初始化
			默认初始化
			显示初始化
			构造方法初始化
	B:子父类的初始化(分层初始化)
			先进行父类初始化,然后进行子类初始化。

*/

class Test {
	public Test() {
		System.out.println("Test类初始化");
	}
}

class Father {
	//成员变量
	Test t = new Test();

	//构造函数
	public Father() {
		System.out.println("Father类初始化");
	}
}

class Son extends Father {
	//成员变量
	Test t = new Test();

	//构造函数
	public Son() {
		super();
		/*
			子类中构造方法有super()
			初始化的时候,不是按照函数运行完成 返回执行下一行 的模式,
			而是按照分层初始化进行的。
			它仅仅表示要先初始化父类数据,再初始化子类数据。
		*/
		/*
			看到程序输出的结果,我表示 惊喜和意外。因为虽然不知道结果是什么,但想不到结果会是这个。
			还是要看源代码或者有老师带。新手两眼一抹黑,太难前进了。
		*/

		System.out.println("Son类初始化");
	}
}

class Demo {
	public static void main(String[] args) {
		new Son();
	}
}

结果展示:



Java优秀,值得学习。
学习资源:itcast视频库。如果您有公开的资源,也可以分享给我,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是给最苦没认真。
如果您觉得博文有可以改进的地方,留言即可。
注:我是新手而且精力有限,分享的内容不是完美的。所以博文仅可用于参考,禁止用于其他用途。

时间: 2024-10-26 17:45:30

JavaSE8基础 子类初始化时有 父子类分层初始化的特点的相关文章

JavaSE8基础 子类中的成员变量与父类重名 简单示例

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: //基类 class Person { public int num = 1; } //子类 class Javaer extends Person { //子类中的成员变量与父类重名了 public int num = 2; public void showNum() { System.out.printl

OC --(2)-- 基础知识分析对象,创建类,自定义初始化方法

1.分析对象 2 创建类(实例变量 方法) 3.创建对象 调用方法 结局问题 @property int age;//相当于声明getter setter 方法; @synthesize age ; //相当于实现getter setter 方法; @synthesize age=_age ;//会去访问_age; 实例变量的可见度;         [email protected]; 公共的 在类的内部和外部都可以进行访问(破坏了面向的对象的封装特性)         [email prot

JavaSE8基础 不通包之间的类进行访问 通过包名来限定类

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码一: package cnblog.jizuiku.Tool; //其他的包中的类要想 访问到这个类,那么就需要为Tools加修饰符 我加的是最大权限 public public class Tools { public static void sayHello() { System.out.println("h

JavaSE8基础 简化不通包之间类的访问 导包 import

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码一: package cnblog.jizuiku.Tool; //其他的包中的类要想 访问到这个类,那么就需要为Tools加修饰符 我加的是最大权限 public public class Tools { public static void sayHello() { System.out.println("h

JavaSE8基础 子类构造函数中写super语句去显式指定父类的构造函数

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /* *默认是 子类的构造函数先去调用父类的无参构造函数,但是问题就来,如果父类没有无参构造函数怎么办? *通过super去显式指定父类的构造函数 */ //父类 class Father { //有参构造函数,int public Father(int num) { System.out.println("

JavaSE8基础 子类必须重写所继承的抽象类中所有抽象方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: //抽象类中可以有 普通的成员方法 abstract class Person { //非抽象方法 public void sayHello(){ } //抽象方法 public abstract void study(); public abstract void play(); } class Javae

JavaSE8基础 子类中所有的构造方法默认访问父类中无参构造方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /*默认的:子类中所有的构造方法默认都会访问父类中无参构造方法*/ //父类 class Father { //无参构造函数 public Father() { System.out.println("父类无参构造函数"); } //有参构造函数 public Father(int num) { S

类的生命周期(下)类的初始化【转】

上接深入java虚拟机——深入java虚拟机(二)——类加载器详解(上),在上一篇文章中,我们讲解了类的生命周期的加载和连接,这一篇我们接着上面往下看. 类的初始化:在类的生命周期执行完加载和连接之后就开始了类的初始化.在类的初始化阶段,java虚拟机执行类的初始化语句,为类的静态变量赋值,在程序中,类的初始化有两种途径:(1)在变量的声明处赋值.(2)在静态代码块处赋值,比如下面的代码,a就是第一种初始化,b就是第二种初始化 [html] view plaincopyprint? public

Java虚拟机JVM学习04 类的初始化

Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始化: 2.在静态代码块中进行初始化. 没有经过显式初始化的静态变量将原有的值. 静态变量的声明语句,以及静态代码块都被看做类的初始化语句,Java虚拟机会按照初始化语句在类文件中的先后顺序来依次执行它们. 类的初始化步骤 1.假如这个类还没有被加载和连接,那就先进行加载和连接. 2.假如类存在直接的