1 import java.util.Scanner; 2 3 public class PersonDemo { 4 public static void main(String[] args){ 5 6 person p1 = new person("Xiaolei", 20); 7 p1.setName("lifang"); 8 String newname = p1.getName(); 9 System.out.println(newname); 10 11 12 } 13 } 14 15 class person{ 16 String name; 17 int age; 18 person(String name, int age){ 19 20 System.out.println(name + " age is " + age); 21 cry(); 22 } 23 24 25 public void setName(String n){ 26 name = n; 27 } 28 public String getName(){ 29 return name; 30 } 31 32 public static void cry(){ 33 System.out.println("cry..."); 34 } 35 }
最近學完了core java的第四章類與對象部分,仍是以爲要來作一個總結,由於不少特性在學習後會開始遺忘,好記性不如爛筆頭。java
java是一門面向對象的語言。函數
類學習
類是是一個具備相同特性的全部元素的大集合,是建立的對象模板存放的地方,建立的對象成爲類的實例。每要建立一個對象,它就要有相對應的類,類中有對象的屬性,對象的初始化,對象所依賴的方法等。this
類與類之間有三個關係spa
1.依賴 一個類須要訪問另外一個類裏面的信息設計
2.繼承 一個類B和類A有關係,可是B存在除了A之外的多餘功能,那麼就說類B繼承類A。A成爲超類,B稱爲子類。如經理manager是超類,員工staff是子類。用extends關鍵字code
class B extends A { }
所以,子類的功能比超類更豐富,在設計類的時候應該將通用的方法放在超類中,而將特殊的功能放在子類中。當須要調用子類繼承超類的變量時,用super關鍵字,如super.risemoney。對象
在繼承的時候,子類惟一沒有繼承的是超類的構造方法,因此要用super關鍵字來指定調用超類中的構造方法。blog
B(){繼承
super(參數列表);
}
不然就會出現錯誤。由於java不會給已經有了構造函數的類自動添加構造方法。因此解決辦法也能夠在原來的超類中自動添加一個空的構造函數。
3.聚合
在實現一個類的時候,因爲公有數據十分危險,因此應當將全部的數據域設計爲私有的,經過private關鍵字。
對象
//這樣很影響代碼的閱讀性
class person { String name; int age; person(String name, int age) { name = name; age = age } }
因此使用this關鍵字就是區分隱式參數和顯式參數。顯式參數即在括號內的參數,隱式參數沒有直接傳遞到。
//這是修改後的代碼 class person { String name; int age; person(String name, int age) { this.name = name; this.age = age } }
this的做用能夠理解爲引用的的對象替代。這個寫法能夠將實例域和局部變量明顯的區分開。
final實例域
若是在構造器構造一個值之後,某個域在後續的操做中不能再修改,那麼使用finnal關鍵字。 private final String name
靜態域與靜態方法
static關鍵字
靜態域是全部類都共有(共享)的一個域,每一個域都會在這裏得到一份拷貝。即若是好幾個類都會有相同的部分,操做或者是實力域,那麼能夠建立一個靜態的類,在裏面放這個共享的東西。若是不加static關鍵字的話,那麼只有這個類的對象能夠調用。
構造函數是對對象進行的封裝
將對對象的操做,包括功能,判斷等進行封裝,由對象進行調用
對某些數據用private修飾能夠隱私化,這些數據不能被篡改,只能經過對應的修改和取得方法去改變
匿名內部類
new 父類/接口() {
//類本體操做
};