我們都知道Java中有三大特性,那便是是繼承,封裝和多態。
封裝,封裝就是使用權限修飾符來實現對屬性的隱藏,同時提供一些共有的get/set方法來對數據進行訪問。我們可以在get或set方法內部添加一些邏輯控制語句。比方說在設置年齡的時候,我就限制傳入的age不能大於100。代碼實現可以這樣寫。 publicvoidsetAge(intage){if(age>100){this.age=120;}}publicintgetAge(){if(this.gender=="女"){System.out.println("女孩子的年齡是你能看的?");return-1;}returnthis.age;} 這只是一個簡單的實例,實際情況是可以優化的。
繼承,我們通過extends關鍵字來標識繼承的父類。而且繼承是可以傳遞的,A繼承B,B繼承C,那么C也是A的父類。父類也叫超類,子類也叫基類。Object是所有類的超類。在子類中調用和父類同名的方法時,執行的是子類的方法,而可以顯示的使用super來調用父類的方法。 繼承的優點顯而易見,可以增加代碼的復用性,但是我們不能為了繼承而去繼承,還要注意繼承和組合的概念,繼承是“isa”的概念,比方說catisaanimal.而組合是“hasa”的概念,比方說ourbodyhasaleg.以上兩句話可以設計出如下的結構。 classAnimal{sleep(){System.print.out("動物睡覺");}}//表示貓是動物classCatextendsAnimal{sleep(){System.print.out("貓睡覺");}}classLeg{}//表示身體里有腿classBody{Legleg=newLeg();} 。
多態,顧名思義,多態就是多種狀態。就像是同樣的早晨有時候你是精神滿滿而有時候你是萎靡不振一樣,我們在調用同一個方法的時候,很可能執行的情況也不一樣。這就是Java中說的多態。想要多態,先要有繼承。還有一種多態的形式,我們稱之為“虛擬方法調用”又叫向上轉型,說的簡單一點就是父類的引用指向了子類對象。父類Animal的a指向了Cat實體。 Animala=newCat();a.sleep()//貓睡覺 需要注意的是在使用虛擬方法調用的時候不能調用父類獨有的方法,這會在運行時報錯,在編譯時沒事,編譯的時候只編譯等號左邊。但是在運行的會看具體的對象,在子類中找不到相應的方法自然會報錯。
