发布于 2016-07-25 01:08:44 | 131 次阅读 | 评论: 0 | 来源: 网友投递
Java程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
父类:
public class TestStatic {
public static String name="china";
{
System.out.println("========方法体========");
}
static{
name="England";
System.out.println("========静态程序块======");
}
TestStatic(){
System.out.println("=========构造方法========");
}
public static void main(String[] args){
System.out.println("========主方法========"+name);
}
public void test(){
System.out.println("========测试方法=========");
}
}
子类:
public class TestExtendStatic extends TestStatic{
//public static String name="HUBEI";
{
System.out.println("========无名称方法体========");
}
static{
//name="SUIZHOU";
System.out.println("========子类静态程序块======");
}
TestExtendStatic(){
System.out.println("=========子类构造方法========");
}
public void test(){
System.out.println("========子类测试方法=========");
}
public static void main(String[] args){
System.out.println("========子类主方法========"+name);
TestStatic ts = new TestExtendStatic();// 上转型对象
ts.test();
}
}
输出如下:
========静态程序块====== :父类static程序块
========子类静态程序块====== :子类static程序块 【不是静态方法】
========子类主方法========England :子类主方法
========方法体======== :父类中非静态代码块
=========构造方法======== :父类构造方法
========无名称方法体======== :子类中非静态代码块
=========子类构造方法======== :子类构造方法
========子类测试方法========= :子类测试方法
public static void main(String[] args){
System.out.println("========子类主方法========"+name);
TestStatic ts = new TestExtendStatic();
ts.test();
System.out.println("-------------------------");
ts = new TestExtendStatic();
ts.test();
}
输出:
========静态程序块====== 父类中静态程序块
========子类静态程序块====== 子类中静态程序块
========子类主方法========England 子类中主方法
========方法体======== 父类中非静态代码块
=========构造方法======== 父类中构造方法
========无名称方法体======== 子类中非静态程序块
=========子类构造方法======== 子类中构造方法
========子类测试方法========= 对象具体调用的方法
------------------------- 静态变量以及程序块只执行一次
========方法体======== 父类中非静态代码块
=========构造方法======== 父类中构造方法
========无名称方法体======== 子类中非静态代码块
=========子类构造方法======== 子类中构造方法
========子类测试方法=========
TestStatic ts = new TestStatic ();// 运用父类构造方法创建
ts.test();
输出为:
========静态程序块====== 父类静态程序块
========子类静态程序块====== 子类静态程序块 【因为程序在子类中运行的,所以子类的静态程序块必须运行】
========方法体======== 父类非静态程序块
=========构造方法======== 父类构造方法
========测试方法========= 父类具体方法test()
如果将上述代码放到父类中,就不会加载子类 静态程序块了。
通过上面 我们还可以发现,静态程序块运行 是在主方法之前,非静态程序块运行是在主方法之后。
我在父类中 主方法中创建一个对象 调用test(),运行的结果:
========静态程序块====== 静态代码块
===main==
========方法体======== 非静态代码块
=========构造方法======== 构造方法
========测试方法=========