3-類與對象-動手動腦
一:1.
2.程序源代碼:
1 class InitializeBlockClass 2 { 3 { 4 field=200; 5 } 6 public int field=100; 7 public InitializeBlockClass(int value) 8 { 9 this.field=value; 10 } 11 public InitializeBlockClass(){} 12 public static void main(String[] args) 13 {14 InitializeBlockClass obj=new InitializeBlockClass(); 15 System.out.println(obj.field); // ? 16 obj=new InitializeBlockClass(300); 17 System.out.println(obj.field); // ? 18 } 19 }
3.程序結果截圖:
4.結果分析:
(1)
{
field=200;
}
該部分為類的初始化塊,可以在類中使用“{”和“}”將語句包圍起來,直接將其作為類的成員。類的這種“沒有名字”的“成員”,多用於初始化類的字段。
(2)
public int field=100; 在定義時進行初始化,此時field = 100;
System.out.println(obj.field); 輸出field的值100。
(3)
obj=new InitializeBlockClass(300);
System.out.println(obj.field);
利用構造方法進行初始化,將field的值初始化為300,輸出300。
5.規律總結:
Java進行初始化的地方有兩個:初始化塊和構造函數,其中初始化塊又分為靜態初始化塊和實例初始化塊。靜態初始化塊是類中由static修飾的初始化塊,實例初始化塊為類中沒有任何關鍵字修飾的初始化語句。
如果在主函數中創建對象時沒有形參時,如果在類中定義了公共的變量並給與了賦值,那麽就會把值賦給主函數中的變量,再調用類中的默認構造函數,如果在主函數中創建對象時有形參,則調用類中對應的構造函數。
二:1.
2.程序源代碼:
class Root
{
static{
System.out.println("Root的靜態初始化塊");
}
{
System.out.println("Root的普通初始化塊");
}
public Root()
{
System.out.println("Root的無參數的構造器");
}
}
class Mid extends Root
{
static{
System.out.println("Mid的靜態初始化塊");
}
{
System.out.println("Mid的普通初始化塊");
}
public Mid()
{
System.out.println("Mid的無參數的構造器");
}
public Mid(String msg)
{
//通過this調用同一類中重載的構造器
this();
System.out.println("Mid的帶參數構造器,其參數值:" + msg);
}
}
class Leaf extends Mid
{
static{
System.out.println("Leaf的靜態初始化塊");
}
{
System.out.println("Leaf的普通初始化塊");
}
public Leaf()
{
//通過super調用父類中有一個字符串參數的構造器
super("Java初始化順序演示");
System.out.println("執行Leaf的構造器");
}
}
public class TestStaticInitializeBlock
{
public static void main(String[] args)
{
new Leaf();
}
}
3.程序結果截圖:
4.規律總結:靜態初始化塊的執行順序:
創建子類型的對象時,也會導致父類函數的執行,先執行靜態函數,在執行public函數,最後執行函數。
三:1.
2.程序源代碼:
1 package lei1; 2 3 public class Fangfa 4 { 5 public static void a() 6 { 7 System.out.println("類的方法"); 8 } 9 public void b() 10 { 11 System.out.println("對象的方法"); 12 } 13 } 14 public class Jingshi 15 { public static void main(String[] args) 16 { 17 Fangfa.a(); 18 Fangfa e=new Fangfa(); 19 e.b(); 20 e.a(); 21 } 22 }
3.結果截圖:
3-類與對象-動手動腦