JAVA的對象和封裝及static與final的用法(詳解)

一:軟件出現的目的編程

     1:用計算機的語言描述現實世界this

     2:用計算機解決現實世界的問題編碼

編程思惟:  使用面向對象的思想(描述)面向對象的世界     (符合人類的思惟習慣)spa

二:面向對象設計和開發程序的好處設計

    1:符合人類的思惟習慣code

    2:交流更加流暢對象

    2:可維護性高(方便修改代碼)blog

    3: 提升設計和開發效率繼承

三:面向對象的三大特性接口

      1封裝性:
           所謂封裝,也就是把客觀事物封裝成抽象的類,而且類能夠把本身的數據和方法只讓可信的類或者對象操做,對不可信的進行信息隱藏。封裝是面向對象的特徵之一,是對象和類概念的主要特性。 簡單的說,一個類就是一個封裝了數據以及操做這些數據的代碼的邏輯實體。在一個對象內部,某些代碼或某些數據能夠是私有的,不能被外界訪問。經過這種方式,對象對內部數據提供了不一樣級別的保護,以防止程序中無關的部分意外的改變或錯誤的使用了對象的私有部分。
    2繼承性
          所謂繼承是指可讓某個類型的對象得到另外一個類型的對象的屬性的方法。它支持按級分類的概念。繼承是指這樣一種能力:它可使用現有類的全部功能,並在無需從新編寫原來的類的狀況下對這些功能進行擴展。 經過繼承建立的新類稱爲「子類」或「派生類」,被繼承的類稱爲「基類」、「父類」或「超類」。繼承的過程,就是從通常到特殊的過程。要實現繼承,能夠經過「繼承」(Inheritance)和「組合」(Composition)來實現。繼承概念的實現方式有二類:實現繼承與接口繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、可是子類必須提供實現的能力;
    3多態性
          所謂多態就是指一個類實例的相同方法在不一樣情形有不一樣表現形式。多態機制使具備不一樣內部結構的對象能夠共享相同的外部接口。這意味着,雖然針對不一樣對象的具體操做不一樣,但經過一個公共的類,它們(那些操做)能夠經過相同的方式予以調用。

四:從現實中抽象出類分三步:

  1. 找出它的種類     2. 找出它的屬性     3. 找出它的行爲

在編程中的應用:

   1:找出名詞肯定類、屬性    eg: (肯定類) class Dog{}       (肯定屬性)String name="小黑"; String Strain="拉布拉多"

   2:找出動詞肯定方法           eg:(進食方法)   public void eat (){ //省略代碼 }  

   3:剔除與業務無關的屬性和方法  

五:實現封裝的步驟

   1畫類圖:  

      類圖的做用:1:用於分析和設計「類」

                            2:直觀,容易理解

  2:封裝的概念:

      封裝:將類的某些信息隱藏在類內部,不容許外部程序直接訪問,而是經過該類提供的方法來實現對隱藏信息的操做和訪問 

  3編寫代碼實現封裝

       1:修改屬性的可見性                                        (設爲private)

       2:建立公有的getter/setter方法                          (用於屬性的讀寫)

       3:在getter/setter方法中加入屬性控制語句      (對屬性值的合法性進行判斷)

【代碼示例】

 1 public class Dog {
 2     private String name;//暱稱
 3     private int health;//健康值
 4     private int love;//親密度
 5     private String strain;//品種
 6 
 7     public Dog() {
 8     }
 9 
10     public String getName(){
11         return name;
12     }
13     public void setName(String name){
14         this.name=name;
15     }
16     public int getHealth(){
17         return health;
18     }
19     public  void setHealth(int health){
20         if(health>100||health<0){
21             this.health=40;
22             System.out.println("健康值應該在0到100之間,默認值是40");
23         }else{
24             this.health=health;
25         }
26     }
27     public int getLove(){
28         return love;
29     }
30     public void setLove(int love){
31         this.love=love;
32     }
33     public String getStrain(){
34         return strain;
35     }
36     public void setStrain(String strain){
37         this.strain=strain;
38     }
39     public void print(){
40         System.out.println("寵物的自白");
41         System.out.println("個人名字叫"+name+",健康值是"+health+",和主人的親密度是"+love+",我是一隻"+strain);
42     }
44 }

   4:封裝的好處:

         (1):隱藏類的實現細節

         (2):只能經過規定方法訪問數據

         (3):方便加入控制語句

           (4):方便修改實現 

  六:訪問成員變量及方法

     1:static的做用:

              (1)static 能夠用來修飾屬性,方法和代碼塊,稱爲靜態變量,靜態方法和靜態代碼塊

              (2)由static 修飾的屬性和方法,能夠直接經過類名.屬性 或 類名.方法來進行調用

              (3)由static 修飾的代碼塊,在運行時,程序默認自動調用,且優先於構造方法和普通方法;若類中有多個代碼塊,則按照靜態代碼塊順序依次執行

     2:final的做用:

               (1)final 可修飾類,屬性,和方法

               (2)當final 修飾一個類時,該類成爲最終類,沒法被繼承。簡稱爲「斷子絕孫類」。

               (3)當使用final修飾方法時,這個方法將成爲最終方法,沒法被子類重寫。可是,該方法仍然能夠被繼承。

               (4)當final修飾屬性(變量)時,則該屬性爲常量,其固定值不變,該值沒法修改

      【示例】

相關文章
相關標籤/搜索