標籤:
一. 對象塊
代碼如下:
1 public class TestObject { 2 int i; 3 int j; 4 { 5 System.out.println("對象塊執行...."); 6 this.i = 1; 7 this.j = 99; 8 } 9 10 public TestObject(){11 System.out.println("建構函式執行.....");12 System.out.println("i = " +i);13 System.out.println("j = " +j);14 }15 16 public static void main(String[] args){17 TestObject test = new TestObject();18 19 }20 }
執行結果:
對象塊執行....建構函式執行.....i = 1j = 99
如以上代碼, 在4~8行中, 為對象塊.
從執行結果可以看出, 對象塊優於建構函式執行, 用於對成員變數進行初始化操作, 而且, 通過this可以看出, 在對象被建立的時候, 對象塊就執行, 可見, 對象塊是屬於對象的.
二. 靜態塊
代碼如下:
1 public class TestObject {2 static{3 System.out.println("靜態塊被載入...");4 }5 6 public static void main(String[] args){7 8 }9 }
運行結果:
靜態塊被載入...
為什麼main函數為空白, 也能顯示出這個結果呢? 因為main函數是一個主入口, 而這個入口執行前, 要先載入類, 而靜態塊是屬於類的, 所以在類被載入的時候, 靜態塊就被執行.
靜態塊一般只執行一次.
好處用法: 對於一些常用的初始化的東西, 在程式開始時就進行初始化操作.(利用了只執行一次, 並且優於main函數的特點)
三. 包 package
每個類都要放在包裡, 規範起來。包的命名推薦使用公司名稱。比如google.com 可以這樣命名包 com.google.項目名稱.模組名稱
包是嚴格的按照系統分類的來的,這點很重要, 也就是說,包是一個檔案夾,一級一級這樣下去,最後子檔案是類檔案.
包的匯入, 用import 包名;
注意:在包與包內的類之間進行相互調用的時候,就要用到import匯入, 繼承一個其他包的類, 也要這麼做.
一個貓類 繼承了動物類. 注意在類前面有import把動物類的包給匯入. 如下:
package com.abc.one;import com.abc.two.Animal;public class Cat extends Animal { static{ System.out.println("A cat"); } public static void main(String[] args){ Cat cat = new Cat(); cat.mathod(); }}
動物類:
package com.abc.two;public class Animal { public static void main(String[] args){ System.out.println("動物類"); } public void mathod(){ System.out.println("動物方法"); }}
運行 Cat.java檔案的結果為:
A cat動物方法
包的建立:
兩個不同包之間的調用, 用import包匯入來實現.
四. 存取控制
package com.abc.one;public class Test { private int i; int j; protected int n; public int m;}
package com.abc.two;import com.abc.one.Test;public class TestSmall { public static void main(){ Test test = new Test(); System.out.println(test.i); }}
無法運行, 因為 i 私人類型.
【學習筆記】java物件導向程式設計3