java中物件導向的三大基本特徵

來源:互聯網
上載者:User

轉載,原文來自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html

眾所周知,java中的物件導向的三大基本特徵是:【封裝】、【繼承】、【多態】

一、封裝
        對象要有一個明確的邊界;邊界的劃分(對象各司其職、對象的粒度、對象的可重用性)
        具體來說:
                1.屬性: 私人 private(提供set和get方法)
                2.方法: 公開或私人public/private
                3.方法聲明 --> 公開
                  方法實現 --> 隱藏
                 實現改變時,對對象的使用者沒有影響。
 
二、繼承
              共性放到父類,特性放到子類;子類,父類 --> 其實就是特殊 --> 一般
        1.關鍵字: extends  例如:Dog extends Animal{}
        2.java中一個類最多隻能有一個直接的父類,即單繼承(具有簡單性、樹形結構),
          C++中是單繼承
          java中要實現多繼承,通過介面來實現。
        3.父類中所有屬性和方法都能繼承給子類;父類中的私人方法不能繼承給子類。
        4.java中的存取修飾詞
           

存取修飾詞

存取權限

 繼承 

private       

本類內部                  

不能繼承

default       

本類+同包 

同包子類可以繼承           

protected     

本類+同包+不同子包  

可以繼承

public        

公開

可以繼承

 

        5.構造對象過程
                   (1)分配空間
                   (2)遞迴地構造父類對象
                                a. 父類 初始化屬性
                                b. 父類 構造方法
                   (3)初始化屬性
                   (4)調用構造方法

        6.super 
               用法:
                   super()  調用父類的構造方法,只能出現在構造方法的第一行
                   super.方法名   super表示父類的對象,通過它去調用父類的方法
               注意:在寫類的時候,一定要寫預設無參的構造方法,如果一個構造方法的
                     第一句既不是this(),也不是super()時,那麼就會在這裡隱含的調用
                     他的父類的無參的構造方法,即隱含的有super()。

三、多態
            運行時多態。
            子類的對象放在父類的引用中,例如 Animal a=new Dog,子類對象當父類對象來使用。
        1.多態原則:
                  (1)物件類型不變
                  (2)只能用引用調用其參考型別中定義的方法
                  (3)運行時,根據對象的實際類型去找子類覆蓋之後的方法
             例子:
                  有Animal類中有eat()和sleep()兩個方法,sleep()中睡8小時;子類Dog中有
                  eat()方法,sleep()方法中睡6小時,還有wangwang()方法。
                  現建立Animal a=new Dog(); 不能調用a.wangwang(),調用a.sleep()輸出睡6小時。

          2.對象的強制轉換
                 格式: 引用 instanceof 類型
                        引用所指的對象是否與類相符,傳回值boolean值。
                 用法:
                       Animal a=new Cat();
                       if(a instanceof Dog)
                       {
                          Dog d=(Dog)a;
                          d.wangwang();
                        }
                 說明:如果只有Dog d=(Dog)a;執行階段錯誤,因為a是Cat而不是Dog (多態原則第一條)

          3.多態的靈活變換
                  (1)用於參數列表上:
                               public void m(A a){} 可以用A類的任何子類對象作為參數
                  (2)用在傳回值上:
                              public A m(){}  這個方法可能返回A類的任何子類對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.