例:person (人)就是類,王思聰就是這個"person"類的物件,他的身高、體重等就是物件的屬性。
類名 物件名 =new類名()
先執行靜態**塊,且只執行一次。構造**塊每次呼叫構造方法都執行。
class fu
public fu()
public int test()
public static int method()
}class zi extends fu
public zi()
public int test()
public static int method()
public void result()
}public class extendstest
}
執行結果:
父類靜態成員變數方法
父類靜態**塊
子類靜態成員變數方法
子類靜態**塊
子類非靜態成員變數方法
父類構造**塊
父類構造方法
子類非靜態成員變數方法
子類構造**塊
子類構造方法
3010
5
靜態**塊 > 構造**塊 > 構造方法this:呼叫本類(當前類)。子類初始化之前先會進行父類的初始化
靜態成員變數方法和靜態**塊從上到下的順序依次執行
非靜態成員變數方法和構造**塊從上到下的順序依次執行,構造方法最後執行
非靜態成員變數方法前面有乙個預設的物件this,this表示正在建立的物件,這裡是在建立son物件,所以test()執行的是子類的非靜態成員變數方法(方法的重寫)
super:呼叫父類。
用於繼承關係中,方法名,返回值,引數列表必須相同
例:
class father
}class son extends father
}
哪些方法不可以被重寫
被final修飾的方法
被static修飾的方法
被private修飾的方法
物件的多型性
1.向上轉型(自動完成):父類 父類物件 = 子類例項
class fu
}class zi extends fu
}public class test
2.向下轉型(強制轉換):子類 子類物件 =(子類) 父類例項;
class fu
}class zi extends fu
}public class test
方法名一致,方法的引數個數不同或引數型別不同,與返回值無關
例:
public class test
public int add(int y, int x)
}
public class parameter
public void show(string name)
}
1.形參是基本資料型別(在棧裡面開記憶體):值傳遞;不會影響到實際引數。
(byte、short、char、int、long、float、double、boolean)
public class test2
private void method(int x)
}
2.實參是引用資料型別(在堆裡面開記憶體 new):位址值傳遞;會影響到實際引數。
特殊型別:string,包裝類(byte、short、character、integer、long、float、double、boolean)
public class test2 ;
method(a);
system.out.println("呼叫完method方法之後:" + a[1]); //1
}public static void method(int a)
}
類的初始化學習
1.類的成員變數會自動進行初始化 基本型別 0 引用型別 null 2.區域性變數必須進行初始化 否則報錯 3.對於類的成員變數初始化操作,比如 int a 9 實際上進行的操作是 int a 0 a 9 所以在賦值前先進行了初始化操作.這樣可以確保任何成員變數都先執行了初始化工作 4.在類的內部,...
Swift學習筆記 初始化
swift為結構體提供了預設初始化方法,當結構體所有屬性都有預設值時,可以使用空白初始化方法 struct person var person person 成員初始化方法是預設初始化方法的另外一種形式,注意常量屬性如果有預設值則不能使用初始化方法,因為常量只能初始化一次 struct person...
類初始化和例項初始化
乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行clinit 方法 clinit 方法由靜態類變數顯式賦值 和靜態 塊組成 類變數顯式賦值 和靜態 塊 從上到下順序執行 clinit 方法只執行一次 父類的初始化 ...