常备知识点之代码块执行顺序问题

一附上Demo1(非继承情况),注释包含相关知识点

  

package com.dong.mianshi;
/**
 * 考察类构造方法 静态模块加载
 * @author Administrator
 *
 */
public class TestOne {
	
//构造方法
	public  TestOne(){
		System.out.println("My TestOne");
	}
//非静态初始化块
	{
		System.out.println("TestOne 正常语句块");
	}
//静态初始化块	
	static{
		System.out.println("TestOne 静态模块");
	}
//父类普通方法
    public void TestMethod(){
    	System.out.println("测试中");
    }
    public static void main(String[] args) {
		TestOne tt = new TestOne();
		tt.TestMethod();//还是只能调用父类中的方法,不能调用子类重写过的方法
	}
}

上示例运行结果如下:
TestOne 静态模块
TestOne 正常语句块
My TestOne
测试中

二附上Demo2(继承情况),注释包含相关知识点(涉及到继承树知识点)

package com.dong.mianshi;

public class TestTwo extends TestOne{
	
		//构造方法
			public TestTwo(){
				System.out.println("My TestTwo");
			}
		//非静态初始化块
			{
				System.out.println("TestTwo 正常语句块");
			}
		//静态初始化块
			static{
				System.out.println("TestTwo 静态模块");
			}
        //重写父类的普通方法	
			public void TestMethod(){
				System.out.println("重写父类的方法");
			}
	     public static void main(String[] args) {
			   //new TestTwo(); 
			  TestOne tt = new TestTwo();  //多态的情况也是一样,最终初始化的顺序是一样的
			  tt.TestMethod();
            }
		}


  上示例运行结果如下:

TestOne 静态模块
TestTwo 静态模块
TestOne 正常语句块
My TestOne
TestTwo 正常语句块
My TestTwo
重写父类的方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值