Java中static代码块,{}大括号代码块,构造方法代码块执行顺序!

注:下列代码中的注释都是JUnit4单元测试运行结果。

首先,没有父类的(父类是Object)的类A

package Static.of;

public class A {

    {
        System.out.println("我是父类-----大括号中的代码");
    }
    
    static{
        System.out.println("我是父类-------static代码块");
    }
    
    public A(){
        System.out.println("我是父类A----------的构造方法");
    }

}
@Test 
    public void fathClass(){
        A a = new A();//父类
        /**
         *  我是父类-------static代码块
            我是父类-----大括号中的代码
            我是父类A----------的构造方法
         */
    }

由上面运行结果可知:只要没有父类(只有Object作为父类)那么执行顺序:static代码块,大括号,构造方法。

继承A的类B

package Static.of;

public class B extends A {
	{
		System.out.println("我是子类大括号中的代码");
	}
	
	static{
		System.out.println("我是子类static代码块");
	}
	
	public B(){
		System.out.println("我是子类B的构造方法");
	}
}

  继承A的类C

package Static.of;

public class C extends A {
	{
		System.out.println("我是C类 中的大括号");
	}
	
	public C (){
		System.out.println("我是C中的构造方法");
	}
}

 

@Test
public void sonBClass(){
B b = new B();
/**
* 我是父类-------static代码块
我是子类static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是子类大括号中的代码
我是子类B的构造方法

*/

}

  

@Test
	public void sonCClass(){
		C c = new C();
		/**
		 *  我是父类-------static代码块
			我是父类-----大括号中的代码
			我是父类A----------的构造方法
			我是C类 中的大括号
			我是C中的构造方法
		 */
	}

  

 

多态语法创建对象

	@Test
	public void polymorphicAB(){
		A a = new B();
		/**
		 *  我是父类-------static代码块
			我是子类static代码块
			我是父类-----大括号中的代码
			我是父类A----------的构造方法
			我是子类大括号中的代码
			我是子类B的构造方法
		 */
	}
	@Test
	public void polymorphicAC(){
		A a = new C();
		/**
		 *  我是父类-------static代码块
			我是父类-----大括号中的代码
			我是父类A----------的构造方法
			我是C类 中的大括号
			我是C中的构造方法
		 */
	
	}

  

根据例子总结
结果是集合{父类static,子类static,父类大括号,父类构造函数,子类大括号,子类构造函数}的一个子集

 

{}大括号里的是初始化块,这里面的代码在创建java对象时执行,而且在构造器之前!其实初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化!! 好处是可以提高初始化块的复用,提高整个应用的可维护性。

转载于:https://www.cnblogs.com/theRhyme/p/7538020.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值