1. 程式人生 > >3-類與對象-動手動腦

3-類與對象-動手動腦

成員 函數 print 初始 有一個 stat pac 沒有 src

一: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-類與對象-動手動腦