1. 程式人生 > >關於Java基礎的複習總結(五)淺談面向物件特徵

關於Java基礎的複習總結(五)淺談面向物件特徵

種下一棵樹,最好的時間是十年前,其次就是現在

面向物件三大特徵
封裝:保證物件自身資料的完整性和安全性
繼承:建立類之間的關係,實現程式碼複用,方便系統擴充套件
多型:相同的方法呼叫,不同的實現方式
PS:抽象也是面向物件思想重要部分,但因為各種程式語言都使用抽象,所以,不能算java語言的特徵。

1、封裝
封裝步驟:
1、屬性私有化
2、設定setter/getter方法
3、設定屬性的存取控制
封裝的優點:
隱藏類的狀態資訊和實現細節,讓使用者只能通過程式規定的方法訪問
可以方便的加入存取控制語句,限制不合理操作

2、繼承
優點:解決程式設計中程式碼冗餘問題,是程式碼重用的一種重要手段之一
特性:單根性 傳遞性
關鍵字:子類 extends 父類

super:
呼叫父類構造方法
如果子類的構造方法沒有通過super顯式呼叫父類有參構造,系統會預設呼叫父類無參
子類可以繼承父類的那些財產:
繼承public和protected修飾的屬性和方法,無論子父類是否在同一個包裡
繼承預設修飾符修飾的屬性和方法,子父類必須在同一個包裡
無法繼承private修飾的屬性和方法
無法繼承父類的構造方法

this:
呼叫本類其他構造方法
this與super不能共存,並且必須是第一句

方法呼叫:不同類方法呼叫,需要先建立物件再呼叫
同一個類中,方法可直接呼叫
過載:同一個類中,方法名相同,引數列表不同
重寫:子父類的關係,方法名相同,引數列表相同,返回值型別相同
子類訪問修飾符許可權大於等於父類

抽象方法:沒有方法體的方法可以定義為抽象方法 abstract
含有抽象方法的類必須定義類抽象類
抽象類不能被例項化
如果子類沒有實現父類所有抽象方法,子類也必須定義為抽象類

3、多型
多型:多型是具有表現多種形態的能力的特徵。
同一個介面,使用不同的例項而執行不同的操作,
繼承是多型的基礎,沒有繼承就沒有多型
多型實現方式:
父類作為形參
父類作為返回值

   向上轉型:Pet pet=new Dog("多多","京巴");
   向下轉型:
         if(pet instanceof Dog) {
            Dog dog = (Dog) pet;
            dog.doWork();
         }

4、final字:
修飾變數不可被修改
修飾類不可被繼承
修飾方法不能被重寫
Object:所有類的祖先類

5、equals()方法重寫

         public boolean equals(Object o){
         if(this==o){
             return true;
         }
         if(!(o instanceof Student)){
             return  false;
         }
         Student stu= (Student) o;
         if(this.stuNo==stu.stuNo &&this.name==stu.name){
             return true;
         }else{
             return false;
         }
     }

6、介面 interface
介面中的成員變數預設都是public static final的靜態常量
介面中的方法預設都是public abstract的抽象方法
介面中沒有構造方法,不能被例項化
一個介面可以繼承多個介面,但介面不能繼承類
介面的實現類必須實現介面的全部方法,否則必須定義為抽象類
類只能繼承一個父類,但可以實現多個介面