面向對象有三個特性:
封裝、繼承、多態
封裝
隱藏細節。
對屬性進行封裝
1、將屬性私有化,使用private修飾屬性
2、提供屬性setter 和 getter方法,方法對外公開訪問。
private String name;
public void setterName(String name){
this.name = name;
}
public String getterName(){
return this.name;
}
構造方法
構造方法在類實例化的時候進行調用。
在Java中,JVM會爲每個類隱式構造一個空參空實現的構造方法。
一旦在類自定義任意形式的構造方法,都將覆蓋掉隱式構造。
構造方法中一般情況都將類實例化後必須要獲取的數據寫在構造方法內。
如果實例化的對象具備帶參構造,則在實例化時必須傳入指定順序的類型的參數。
注意點:
屬性和方法也是對象,屬性類型實例化成爲Field類型,方法實例化成爲Method類型。
類在實例化之前會將該類中所有屬性和方法先進行實例化,然後通過構造方法對其類本身進行實例化。
Java中常見的設計模式
單例模式、工廠模式、觀察者模式、代理模式......
私有構造將導致類無法實例化。
static 靜態修飾符:使用static修飾的屬性或者方法將常駐內存。
static修飾的屬性或方法不需要對類進行 實例化就可以直接訪問。使用類名.靜態方法(屬性),因此靜態方法也被稱爲類方法,靜態屬性又稱爲類屬性。而沒有使用static修飾的方法稱爲實例方法。
使用static的場合:
1、當方法需要頻繁調用時
2、當數據需要全局共享時,需要跨類訪問數據時。
靜態方法中訪問類的屬性,該屬性必須是靜態屬性。
重載的作用:對方法名進行復用。
使用條件:同一個類中,方法名相同,參數列表不同,成爲方法的重載。
重載的多個方法之間沒有任何的業務關聯,彼此獨立。
繼承:是面向對象的重要機制,指一個對象可以直接調用另一個對象的屬性和方法。
被繼承的類稱爲父類、超類、基類
繼承父類的類稱爲子類、派生類
通俗的話來講:繼承就是子類能夠獲取父類中所有屬性和方法
子類可以通過方法的重寫來表現得更具體
使用繼承的目的:
1、實現類的繼承,可以複用類的所有屬性和方法
2、繼承可以更好的實現類的擴展
3、實現多態性
使用繼承注意點:
1、單繼承模式,一個子類只能擁有一個父類(可以使用多繼承的方式繼承多個類的屬性)
2、子類應該比父類要更具體(1、擁有更多屬性 2、擁有更多方法 3、方法的重寫)
子類在實例化完成之前會對父類進行實例化
super 用來表示對父類實例的引用,該關鍵字只能在子類內部使用。
如果子類實例化的時候,父類中沒有無參構造,則必須手動調用父類的帶參構造方法且必須寫在子類構造的第一句;換而言之,JVM只會對父類的無參構造進行自動調用。
方法的重寫:重寫只在子類、實現類中存在,表示對父類同名方法的一次覆蓋,重寫要求方法的返回值類型、方法名、參數列表都必須相同,且訪問級別不低於父類方法的訪問級別。
Java中所有類的父類是Object,任何一個Java類都派生自Object對象。