Java中面向對象的封裝,繼承,重載重寫
封裝的定義
封裝從字面意思理解就是包裝,專業說法就是隱藏信息,是指將數組和對數據的操作封裝在一起,儘可能的隱藏細節,只保留對外的通道使之與外部發生關聯。也就是說,用戶是無法知道對象內部的細節,但是可以通過該對象對外提供的訪問通道來訪問該對象。
封裝的特點
把類的屬性隱藏,提供公共方法對其訪問
提高了代碼的複用性
提高了代碼的安全性
示例:銀行存錢
繼承
繼承的定義
Java中使用extends關鍵字實現類的加載機制稱之爲繼承,子類自動擁有了基類(也叫父類,superclass)的所有非私有成員,即成員變量和成員方法
繼承的好處
引入繼承可以減少重複的代碼量,提高代碼和開發的效率
繼承需注意的點
如果父類中的變量是private私有變量,那麼子類中就不可以調用父類中的變量,只能在父類的方法中調用,子類和其他類都不可以。
Java只支持單繼承,不支持多繼承,即:一個子類只有一個父類(基類)。
子類對象包含父類對象
靜態方法是不可以繼承的
示例:自行車和公路賽
自行車類
public classBike {
public int wheels= 2; //輪子數量
public voidrun(){
System.out.println("自行車都能跑");
}
}
變速自行車類
public classRaceBike extends Bike {
public int gear= 2; // 齒輪個數
public voidspeedUp() {
System.out.println("變速自行車可以加速");
}
public voidspeedDown() {
System.out.println("變速自行車可以減速");
}
}
測試類
public classTest {
public static voidmain(String[] args) {
RaceBike bike= new RaceBike();
int wheels= bike.wheels;//獲取父類的成員變量wheels
int gears= bike.gear;
System.out.println("變速車的輪子數量是:"+ wheels);
System.out.println("變速車的齒輪數是:"+ gears);
bike.run(); //調用父類的跑的方法
bike.speedUp();
bike.speedDown();
}
}
重載
重載的定義
方法的重載是指同一個類裏同一個方法不同參數,在測試類裏通過調用同方法,給予不同的參數,方法的重載即:同名不同參
其中參數不同指的是參數類型或者是參數個數不同,
構造方法也可以重載
示例:
public classStudent {
public voidintro(String name) {
System.out.println("我叫"+ name);
}
public voidintro(int age){
System.out.println("我今年"+ age + "歲");
}
public voidintro(String name, int age){
System.out.println("我叫"+ name + "今年"+ age + "歲");
}
}
重寫
方法重寫的定義
方法重寫是基於繼承,子類繼承父類,子類可以調用父類的方法,同時子類也可以重寫父類的方法,實現與父類不同的業務邏輯。子類與父類的方法,相同方法名,相同的參數類型,相同的參數。這樣調用子類的方法時,父類的方法就會被覆蓋。即:同名又同參
示例:動物會叫,叫聲各不相同
動物類
public classAnimal {
public voidspeek(){
System.out.println("動物都會叫");
}
}
狗類,繼承自動物類
classDog extends Animal {
/**
* 重寫父類的speek方法
*/
@Override
public voidspeek() {
System.out.println("旺旺旺...");
}
}
貓類,繼承自動物類
classCat extends Animal {
/**
* 重寫父類的speek方法
*/
@Override
public voidspeek() {
System.out.println("喵喵喵...");
}
}