`

继承 静态 代码块 变量 构造函数等执行顺序

    博客分类:
  • java
阅读更多

1.静态变量和静态代码块和类绑定,类初始化时执行

 

父类的静态代码块和静态变量

子类的静态代码块和静态变量

 

父类的代码块和普通变量

父类的构造函数

 

子类的代码块和普通变量

子类的构造函数

 

 

public class TestExecutorOrder {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Father object = new Son();

	}

}

class P{
	public static String  print(String str){
		System.out.println(str);
		return str;
	}
}

class Father{
	static{
		System.out.println("Father Static");
	}
	
	{
		System.out.println("Father {}");

	}
	
	String i = P.print("Father Common V");
	static String s = P.print("Father Static V");
	
	public Father(){
		this.printMessage();
		i = "Father";
	}
	
	public void printMessage(){
		System.out.println(this.i);
	}
	
	
}

class Son extends Father{
	static{
		System.out.println("Son Static");
	}
	
	{
		System.out.println("Son {}");

	}
	
	String i = P.print("Son Common V");
	static String s = P.print("Son Static V");
	
	public Son(){
		this.printMessage();
		i = "Son";
	}
	
	public void printMessage(){
		System.out.println(this.i);
	}
	
	
}

 

 

执行结果

 

Father Static
Father Static V
Son Static
Son Static V
Father {}
Father Common V
null
Son {}
Son Common V
Son Common V

 

 

有一处需要注意

 

在调用

public Father(){

this.printMessage();

i = "Father";

 

}

此处的this.printMessage()调用的是子类

 

 

---------------------------

 

稍作修改

 

 

 

class Father{
	static{
		System.out.println("Father Static");
	}
	
	{
		System.out.println("Father {}");

	}
	
	String i = P.print("Father Common V");
	static String s = P.print("Father Static V");
	
	public Father(){
		this.printMessage();
		System.out.println(this.i);
		i = "Father";
	}
	
	public void printMessage(){
		System.out.println("Father Message");
	}
	
	
}

class Son extends Father{
	static{
		System.out.println("Son Static");
	}
	
	{
		System.out.println("Son {}");

	}
	
	String i = P.print("Son Common V");
	static String s = P.print("Son Static V");
	
	public Son(){
		this.printMessage();
		i = "Son";
	}
	
	public void printMessage(){
		System.out.println("Son Message");
	}
	
	
}

 结果

 

Father Static
Father Static V
Son Static
Son Static V
Father {}
Father Common V
Son Message
Father Common V
Son {}
Son Common V
Son Message

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java:静态代码块和构造函数执行顺序

     1 静态变量,静态代码块(类加载时执行,类不加载不执行)  2 实例变量,实例代码块(创建对象时才执行,不创建对象不执行)  3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private...

    构造函数与静态块的执行顺序

    描述继承中子类与父类构造函数,静态块的执行顺序

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    对继承理解

    一个程序执行加载的顺序,包括静态代码块,成员变量,{}代码,构造函数等

    基于javatcpsocket通信的拆包和装包源码-java-:Java-

    静态代码块>构造代码块>构造函数 单例模式:保证一个类在内存中的对象唯一性 代码体现:私有化构造函数,创建私有并静态的本类对象,定义公有并静态的方法,返回该对象 //饿汉式 class Single{ private Single(){}//...

    Java之static关键字

    一、模板类,里面包括:成员变量、静态变量、普通代码块、静态代码块、普通方法、静态方法、构造函数、静态内部类(包括:成员变量、静态变量、普通代码块、静态代码块、普通方法、静态方法、构造函数)。

    零起点学通C++多媒体范例教学代码

    11.10.2 通过构造函数将变量转换为一个对象的成员变量 11.10.3 通过operator关键字进行转换 11.11什么可以重载,什么不可以重载 第12章 继承 12.1 什么是继承和派生 12.1.1 复杂的继承和派生 12.1.2 继承和派生如何...

    JAVA—面向对象

    静态代码块: 特点: 实例变量和类变量的区别: 静态利弊: 工具类 继承: 概念: 好处: 知识点: 父子之间有相同的属性和方法 重写: 概念: 重写要求: 调用父类构造函数 为什么子类一定要访问父类中的构造函数?...

    C++编程思想习题

    目 录 译者序 前言 第1章 对象的演化 1.1基本概念 1.1.1对象:特性十行为 1.1.2继承:类型关系 1.1.3多态性 1.1.4操作概念:OOP程序像什么 1.2为什么C++会成功 1.2.1较好的C ...附录C 模拟虚构造函数

    零起点学通C++学习_多媒体范例教学代码

    11.10.2 通过构造函数将变量转换为一个对象的成员变量 11.10.3 通过operator关键字进行转换 11.11什么可以重载,什么不可以重载 第12章 继承 12.1 什么是继承和派生 12.1.1 复杂的继承和派生 12.1.2 继承和...

    Java中this与super的区别

    静态方法和静态的代码块中绝对不能出现this。this也可作为构造函数来使用。在后面可以看到 而什么是super,可以理解为是指向自己超(父)类对象的一个指针, 而这个超类指的是离自己最近的一个父类。super的...

    visualC++2010入门经典源代码

    7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解类 363 8.1 类析构函数 363 8.1.1 析构函数的概念 363 8.1.2 默认的析构函数 364 8.1.3 析构函数与动态内存...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    13.4.3 数据块读写函数fread 和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    13.4.3 数据块读写函数fread 和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数 ...

    C++高级参考手册 完全自学 内容详细 讲解通俗易懂

    4.5 含有构造函数和析构函数的stack 4.6 集合初始化 4.7 缺省构造函数 4.8 小结 4.9 练习 第5章 函数重载与缺省参数 5.1 范围分解 5.1.1 用返回值重载 5.1.2 安全类型连接 5.2 重载的例子 5.3 缺省参数 ...

    Java实现局域网内两点文件传输

    2. 在静态代码块中,初始化了一个DecimalFormat 对象 df用于格式化文件大小的显示。 3. server类的构造函数通过调用 super(SERVER_PORT)来创建一个服务器端的Socket。 4. load()方法是一个循环,用于接收客户端的...

    C++编程思想,用简单的例子和简练的叙述讲解C++编程,别具特色。

    4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的...

    C++ 语言 详细教程电子版

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++编程思想

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

Global site tag (gtag.js) - Google Analytics