定義:
子類中出現與父類一模一樣的方法時,會出現覆蓋操作,也稱爲override重寫、複寫或者覆蓋。'' 當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內容
比如手機,當描述一個手機時,它具有發短信,打電話,顯示來電號碼功能,後期由於手機需要在來電顯示功能中增加顯示姓名和頭像,這時可以重新定義一個類描述智能手機,並繼承原有描述手機的類。並在新定義的類中覆蓋來電顯示功能,在其中增加顯示姓名和頭像功能。
重寫注意事項有
1,子類方法覆蓋父類方法,必須要保證權限大於等於父類權限。
2,子類與父類的方法聲明必須一模一樣:函數的返回值類型函數名 參數列表都要一樣
當子類的成員與父類的成員變量重名時如何訪問變量
1.當子類的成員與父類的成員變量重名時,在子類中直接成員變量或使用this.成員變量名稱訪問本類的成員變量
2,子類的成員與父類的成員變量重名時,在子類中,super.成員變量訪問父類的成員變量
抽象類,抽象方法的定義
被abstract修飾,只有方法聲明沒有方法主體的方法就是抽象方法
被abstract修飾類就是抽象類
=========================================================
例題
用代碼描述
四個輪子的白色的汽車可以跑和加油
兩個輪子的紅色電動自行車可以跑和充電
要求: 把汽車和電動自行車的共性抽取到交通工具類中
/*
1.定義交通工具類(Vehicle)
a)成員變量
i.輪子個數 wheel
ii.顏色 color
b)成員方法
i.跑 run()
1.打印格式: 4個輪子白色的車在跑
c)要求:
i.成員變量不帶權限修飾符,方法是公共權限的.
*/
publicclass Vehicle {
// a)成員變量
// i.輪子個數 wheel
intwheel;
// ii.顏色 color
Stringcolor;
//b)成員方法
// i.跑 run()
// 1.打印格式: 四個輪子白色的車在跑
publicvoid run(){
System.out.println(wheel+"個輪子"+color+"的車在跑");
}
}
/*
2.定義小汽車類(Car),繼承Vehicle類
a)成員方法:加油 (addGasoline()))
i.在方法中的輸出格式爲: 4個輪子的白色小汽車在加油
*/
publicclass Carextends Vehicle{
// a)成員方法:加油 (addGasoline()))
// i.在方法中的輸出格式爲: 4個輪子的白色小汽車在加油
publicvoid addGasoline(){
System.out.println(wheel+"個輪子的"+color+"小汽車在加油");
}
}
/*
3.定義電動車類(ElectricBicycle),繼承Vehicle類
a)成員方法:充電 (charge())
i.在方法中的輸出格式爲: 2個輪子的黑色電動自行車在充電
*/
publicclass ElectricBicycleextends Vehicle {
// a)成員方法:充電 (charge())
// i.在方法中的輸出格式爲: 2個輪子的黑色電動自行車在充電
publicvoid charge(){
System.out.println(wheel+"個輪子的"+color+"電動自行車在充電");
}
}
/*
4.定義測試類Test
c)提供main方法
d)在main方法中
i.使用空參構造,創建Car 對象c
ii.把c對象的成員wheel 賦值爲 4
iii.把c對象的成員color賦值爲 白色
iv.調用c對象成員方法run方法
v.調用c對象的成員方法addGasoline()
vi.使用空參構造,創建ElectricBicycle對象eb
vii.把eb對象的成員wheel 賦值爲2
viii.把ed對象的成員color賦值爲黑色
ix.調用ed對象成員方法run方法
x.調用ed對象成員方法charge方法
*/
publicclass Test {
publicstaticvoid main(String[] args) {
// i.使用空參構造,創建Car 對象c
Carc = new Car();
// ii.把c對象的成員wheel 賦值爲 4
c.wheel = 4;
// iii.把c對象的成員color賦值爲 白色
c.color = "白色";
// iv.調用c對象成員方法run方法
c.run();
// v.調用c對象的成員方法addGasoline()
c.addGasoline();
// vi.使用空參構造,創建ElectricBicycle對象eb
ElectricBicycleeb = new ElectricBicycle();
// vii.把eb對象的成員wheel 賦值爲2
eb.wheel = 2;
// viii.把ed對象的成員color賦值爲黑色
eb.color = "黑色";
// ix.調用ed對象成員方法run方法
eb.run();
// x.調用ed對象成員方法charge方法
eb.charge();
}
}