Java 中的三大特性

來源:互聯網
上載者:User

標籤:動物   結構   public   方向   一個   邏輯   基類   new   body   

我們都知道 Java 中有三大特性,那就是繼承 ,封裝和多態 。那我今天我就來說說這幾個特性 。

老樣子 ,先問問自己為什麼會存在這些特性 。首先說封裝 ,封裝就是使用許可權修飾符來實現對屬性的隱藏 ,同時提供一些共有的 get / set 方法來對資料進行訪問 。這樣怎麼實現封裝的效果的呢 ?我們可以在 get 或 set 方法內部添加一些邏輯控制語句 。比方說在設定年齡的時候 ,我就限制傳入的 age 不能大於 120 。代碼實現可以這樣寫 。

public void setAge(int age){    if(age > 120){        this.age = 120;    }}public int getAge(){    if(this.gender == "女"){        System.out.println("女孩子的年齡是你能看的?");        return -1;    }    return this.age;}

這隻是一個簡單的執行個體 ,實際情況是可以最佳化的 。比方說對小於零的 age 進行限制 。所以我們可以看到對資料的封裝有以下優點 ,對成員進行精密的控制且隱藏了實現細節 ,還可以自由的修改方法的內部實現 。

就像是兒子繼承老子的財富那樣 ,子類也可以繼承父類的屬性和方法 ,但是有些是不能繼承的 ,這要回到前面看一看存取修飾詞的問題了 。在 Java 中只允許單繼承 ,就是只能有一個老子 。繼承是怎麼實現的 ?為什麼要有繼承 ?我們通過 extends 關鍵字來標識繼承的父類 。而且繼承是可以傳遞的 ,A 繼承 B ,B 繼承 C ,那麼 C 也是 A 的父類 。父類也叫超類 ,子類也叫基類 。Object 是所有類的超類 。在子類中調用和父類同名的方法時 ,執行的是子類的方法 ,而可以顯示的使用 super 來調用父類的方法 。

繼承的優點顯而易見 ,可以增加代碼的複用性 ,但是我們不能為了繼承而去繼承 ,還要注意繼承和組合的概念 ,繼承是 “ is a ” 的概念 ,比方說 cat is a animal . 而組合是 “ has a ” 的概念 ,比方說 our body has a leg . 以上兩句話可以設計出如下的結構 。

class Animal {    sleep(){        System.print.out("動物睡覺");    }}// 表示貓是動物class Cat extends Animal{    sleep(){        System.print.out("貓睡覺");    }}class Leg{}// 表示身體裡有腿class Body{    Leg leg = new Leg();}

而最後一個就是多態 ,同樣的問自己 ,什麼是多態 ?多態有什麼用 ?顧名思義 ,多態就是多種狀態 。就像是同樣的早晨有時候你是精神滿滿而有時候你是萎靡不振一樣 ,我們在調用同一個方法的時候 ,很可能執行的情況也不一樣 。這就是 Java 中說的多態 。那為什麼會不一樣呢 ?還記得剛剛說的子類繼承父類的方法吧 ,子類在繼承父類方法之後 ,可以對其進行重寫 ,當我們調用重寫的方法時 ,啟動並執行結果就和父類的結果不一樣 。所以說 ,你想要多態 ,先要有繼承 。還有一種多態的形式 ,我們稱之為 “ 虛擬方法調用 ” 又叫向上轉型 ,說的簡單一點就是父類的引用指向了子類對象 。像這樣 ,父類 Animal 的 a 指向了 Cat 實體 。

Animal a = new Cat();a.sleep() // 貓睡覺

需要注意的是在使用虛擬方法調用的時候不能調用父類專屬的方法 ,這會在運行時報錯 ,在編譯時間沒事 ,編譯的時候只編譯等號左邊 。但是在啟動並執行會看具體的對象 ,在子類中找不到相應的方法自然會報錯 。

可以總結一下多態的作用了 ,我們使用多態可以達到解耦合和易擴充的目的 ,我們編寫不同模組的功能 ,在調用的時候只需要將父類的引用變個方向就行 。只需提供穩定的子類實現 ,父類只負責調用相應的介面方法就行 。這也就是工廠設計模式的原理 。

Java 中的三大特性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.