一附上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
重写父类的方法