java學習總結02

 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關鍵字。

 

對象

 對象有三個主要的 特性
1.對象的行爲———— 能夠對對象施加哪些操做,能夠對對象施加哪些方法。
2.對象的狀態———— 當施加那些方法的時候對象是怎麼響應
3.對象的標識———— 如何辨別具備相同行爲和狀態的不一樣對象
 
對象在類中定義的屬性稱做實例域,方法用於操做對象以及存取它們的實例域
 
每次建立對象後,要用構造器對對象進行初始化。
1.構造器名與類相同
2.每一個類能夠有一個以上的構造器
3.構造器有0個1個或多個參數
4.構造器沒有返回值
5.構造器老是伴隨着new操做一塊兒調用
構造器和函數能夠重載,重載是名字相同但參數不一樣,包括類型或者數目。
構造器中能夠有個初始化塊,它是每個構造器所共有的部分。格式是一個大括號括好的部分
this關鍵字
若是代碼這麼寫
//這樣很影響代碼的閱讀性
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 父類/接口() {

//類本體操做

};

相關文章
相關標籤/搜索