在建立對象時(new),必會調用一個特殊的方法,這個方法是初始化對象信息的爲new服務的。這個方法稱爲「構造器」java
使用 new + 構造方法建立一個新的對象。函數
構造函數是定義在 Java類中的一個用來初始化對象的函數。測試
構造函數與類同名且沒有返回值。spa
例如: Person類的構造函數:code
public class Person { int id; int age; Person(int n, int i){ id = n; age = i; } }
建立對象時,使用構造函數初始化對象的成員變量對象
public class Test { public static void main(String[] args) { Person tom = new Person(1, 18); Person jeck = new Person(2, 20); } }
1) 名稱必須和類名一致,與類名相同blog
2) 沒有返回類型|void圖片
3) 構造器能夠存在return,return有選擇的跳出構造器內存
4) 不能隨便調用,和new在一塊兒使用,其餘時候不能調用get
5) 修飾符不能爲 final abstract static
做用:
初始化對象信息,不是用於建立對象的
空構造:
沒有參數的構造器、無參構造
1) 一個類中,若是沒有顯示|手動 加入 任意構造器 javac編譯後 自動加入空構造
2) 一旦加入構造器, javac 不會加入空構造器
方法的重載是指一個類中能夠定義有相同的方法名,但參數不一樣的多個方法。調用時,會根據不一樣的參數列表選擇對應的方法。
與普通方法同樣,構造方法也能夠重載
例子以下:
A:一個對象的內存圖
B:二個對象的內存圖
C:三個對象的內存圖
內存分析
劃分
引用的特色:
1) 同一時刻一個一引用只能指向一個對象
2) 一個對象能夠被多個引用所指向,其中一個對其進行更改,該對象的其餘引用也可見該變化
3) Java一切爲值傳遞,引用拷貝地址
約定俗成的命名規則
類名的首字母大寫
變量名和方法名的首字母小寫
運用駝峯標識
例子:
public class Cat { String color; // 毛的顏色 String name; // 名稱 public void chase(Mice mice){ mice.type = "jerry"; // 改變 System.out.println(name + " 逮 " + mice.type); } public static void main(String[] args) { // 引用 與內存分析(運行期爲--》數據的流向) Cat cat = new Cat(); cat = new Cat(); // 引用發生變化,同一個時刻一個引用只能指向一個對象 cat.color = "黑色"; cat.name = "tom"; Mice mice = new Mice(); mice.type = "米奇"; // 將兩者聯繫起來 --》 依賴 cat.chase(mice); // 傳遞時,值拷貝,拷貝地址,拷貝完成後 一個對象被多個引用所指向 System.out.println(mice.type); // jerry 其中一個對其發生變化,該對象的其餘引用也可減該變化 } } class Mice{ String type; }
定義以下類
public class BirthDate { int day; int month; int year; public BirthDate(int d, int m, int y){ day = d; month = m; year = y; } void setDay(int d){ day = d; } void setMonth(int m){ month = m; } void setYear(int y){ year = y; } int getDay(){ return day; } int getMonth(){ return month; } int getYear(){ return year; } void display(){ System.out.println(day + "-" + month + "-" + year); } }
測試類:
public class Test { public static void main(String[] args) { Test test = new Test(); int date = 9; BirthDate d1 = new BirthDate(7,7,1970); BirthDate d2 = new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); System.out.println(date); System.out.println(d1); System.out.println(d2); } void change1(int i){ i = 1234; } void change2(BirthDate b){ b = new BirthDate(22,2,2004); } void change3(BirthDate b){ b.setDay(22); } }
總結:
對象的建立和使用,必須使用new 關鍵字建立對象,使用對象引用.成員變量來引用對象的成員變量,使用對象引用.方法(參數列表)來調用對象的方法。
同一類的每一個對象有不一樣的成員變量存儲空間,同一類的每一個對象共享該類的方法,
非靜態方法是針對每一個對象進行調用 。
樂字節原創,轉載請註明出處。請繼續關注樂字節