一個類中包含如下幾類東西,他們前後是有順序關係的
1.靜態熟悉 : static 開頭定義的屬性
2.靜態方法塊 : static{} 圈起來的方法塊
3.普通屬性 :未帶static定義的屬性
4.普通方法塊: {}圈起來的方法塊
5.構造函數:類名相同的方法
6.方法 : 普通方法
包含子類和接口類
普通類
靜態變量
靜態代碼塊
如果有main函數 main()
普通變量
普通代碼塊
構造函數
package com.rqk.command.Life;
public class LifeCycle {
//靜態屬性
private static String staticField = getStaticFeild();
//靜態方法塊
static {
System.out.println(staticField);
System.out.println("靜態方法塊初始化");
System.out.println("static Patch Initial");
}
//普通屬性
private String field = getField();
//普通方法塊
{
System.out.println(field);
System.out.println("普通方法塊初始化");
System.out.println("Field Patch Initial");
}
public static String getStaticFeild(){
String staticField = "static Field Initial";
System.out.println("靜態屬性初始化");
return staticField;
}
public static String getField() {
String filed = "Field Initial";
System.out.println("普通屬性初始化");
return filed;
}
public LifeCycle(){
System.out.println("構造函數初始化");
System.out.println("structure Initial ");
}
public static void main(String[] arg){
new LifeCycle();
}
}
繼承的子類
父類靜態變量
父類靜態代碼塊
子類靜態變量
子類靜態代碼塊
父類普通變量
父類普通代碼塊
父類構造函數
子類普通變量
子類普通代碼塊
子類構造函數
抽象的實現子類: 接口 - 抽線類 - 實現類
接口靜態變量
抽象類靜態變量
抽象類靜態代碼塊
實現類靜態變量
實習類靜態代碼塊
抽象類普通變量
抽象類普通代碼塊
抽象類構造函數
實現類普通變量
實現類普通代碼塊
實現類構造函數
static 表示靜態的 可以用來修飾屬性、方法、代碼塊(或初始化塊)、內部類。
public class TestStatic {
//static修飾屬性
private static int id;
//static修飾方法
public static void getId(){ System.out.println(id); }
//static修飾代碼塊
static{ System.out.println(id); }
//static修飾內部類
static class A{ private String name; }
}
static 面試題
public class TestStatic {
public static void main(String[] args) {
B b = new B();
b.test(); //輸出結果是什麼?
}
}
class A{
static{
System.out.println("A");
}
public A(){
System.out.println("B");
}
}
class B extends A{
static{
System.out.println("C");
}
public B(){
System.out.println("D");
}
public void test(){
System.out.println("E");
}
}
//輸出結果的順序爲:A ——> C ——> B ——> D ——> E
abstract :表示抽象的 可以用來修飾類和方法。
abstract class A{
public abstract void test();
}