標籤:logs 自動產生 參數 儲存 inf 執行個體 方法調用 執行 int
java基礎物件導向之封裝
2017-01-15
封裝
1)封裝性就是保證類內部被外部類不可見
2)所有屬性都必須使用private關鍵字聲明
3)封轉後的屬性如果要被外部所訪問就必須實現set和get方法
例如:
使用了private聲明的屬性只有在自己的類是可見的
1 class Book{ 2 private String title ; //使用private聲明的屬性 3 private int price ; 4 } 5 public class PrivateDemo1 { 6 public static void main(String[] args) { 7 Book bk = new Book () ; 8 bk.title = "java基礎" ; //使用了private聲明的屬性只有在自己的類是可見的 9 bk.price = 89.9 ;10 }11 }
如果想要讓我們的程式正常使用,那麼必須要想辦法讓外部的程式去操作類的屬性才可以。
在類中所有的屬性都要求使用private關鍵字來聲明,如果屬性需要被外部所使用,那麼需要定義相應的set和get方法。
setter方法:設定屬性內容
1 public void setTitle(String title) {2 this.title = title;3 }
getter方法:取得設定的屬性內容
public String getTitle() { return title; }
構造方法
對象的產生格式:1類名稱 2對象名稱 = 3new 4類名稱() ;
類名稱:規定了對象的類型,就是規定了對象屬於那個類的執行個體(可以使用那些屬性或方法)
對象名稱:如果想要使用對象,就需要有一個名字,這個對象名是唯一的
new: 開闢新的對記憶體空間,如果沒有new關鍵字對象是無法被執行個體化的
類名稱():調用了一個和類名稱一樣的方法,這個方法就稱為構造方法
java為了保證程式的正常執行,那麼在程式的編譯之後為類裡增加一個無參數的構造方法。
構造方法的定義原則:方法名稱與類名稱相同,沒有傳回值聲明。
1 class Person{ 2 public Person() { //無參構造方法 3 System.out.println("**********"); 4 } 5 } 6 public class PrivateDemo2 { 7 public static void main(String[] args) { 8 Person p = null ;//聲明對象 9 p = new Person() ; //執行個體化對象10 /**11 * 執行個體化對象的時候會調用構造方法12 */13 }14 }
所有的構造方法都在使用關鍵字new執行個體化的時候被預設調用。
構造方法與普通的方法最大的區別
構造方法是在執行個體化對象的時候只調用一次。
普通方法是在執行個體化對象之後,可以隨意調用多次
構造方法的核心作用,在類對象執行個體化的時候設定屬性初始化內容。構造方法是為屬性初始化準備的。
如果一個類中已經明確的定義了一個構造方法,那麼自動產生的無參的構造方法將不會自動產生預設的構造方法。一個類中至少保留一個構造方法。
1 class Person{ 2 private String name ; 3 private int age ; 4 public Person(String n , int a) { //無參構造方法 5 name = n ; 6 age = a ; 7 System.out.println("**********"); 8 } 9 public String getName() {10 return name;11 }12 public void setName(String name) {13 this.name = name;14 }15 public int getAge() {16 return age;17 }18 public void setAge(int age) {19 this.age = age;20 }21 22 }23 public class PrivateDemo2 {24 public static void main(String[] args) {25 Person p = null ;//聲明對象26 p = new Person("zhangsan" ,30) ; //執行個體化對象27 /**28 * 執行個體化對象的時候會調用構造方法29 */30 }31 }
構造方法的核心作用:在類對象執行個體化的時候為屬性設定初始化
構造方法的重載
既然構造方法也屬於方法的一種,那麼構造方法也是可以重載的。
1 class Person1{ 2 private String name ; 3 private int age ; 4 public Person1(){ 5 System.out.println("沒有參數的構造方法 "); 6 } 7 public Person1(String n){ 8 System.out.println("有一個參數的構造方法"); 9 }10 public Person1(String name , int age){11 System.out.println("有兩個參數的構造方法");12 }13 }
匿名對象
真實的資訊都儲存在堆記憶體之中,如果棧指向的對象就稱為匿名對象。
1 class Person2{ 2 private String name ; 3 private int age ; 4 public void info(){ 5 System.out.println("匿名方法調用"); 6 } 7 } 8 public class PrivateDemo4 { 9 public static void main(String[] args) {10 new Person2().info() ;//匿名對象調用info()方法11 /**12 * 沒有棧記憶體引用的對象就是匿名對象13 */14 }15 }
匿名對象由於沒有其他對象的引用,所以匿名對象只能使用一次。
總結:
1、構造方法的定義要求:方法名與類名完全相同,且無傳回值。
2、構造方法是在類對象在執行個體化的時候調用的
3、一個類之中必須保留有一個構造方法,如果沒有明確定義一個構造方法那麼會自動產生一個無參的什麼也不做的構造方法。
4、構造方法的核心是類對象在執行個體化的時候為類中的屬性初始化。
5、構造方法重載時只要求考慮參數的個數及類型。
6、匿名對象只可以使用一次。
java基礎物件導向之封裝