繼承的格式:
class 類名1 extends 類名2{
}
繼承要注意 的細節(jié):
1. 子類是可以繼承父類的成員枷畏。
2. 子類不能繼承父類的私有成員勇劣。
3. 子類不能繼承父類的構(gòu)造函數(shù)阳堕。
4. 創(chuàng)建子類對象時默認會先調(diào)用父類無參的構(gòu)造函數(shù)松忍。
疑問:創(chuàng)建子類對象時調(diào)用父類的構(gòu)造函數(shù)的意義蒸殿?
初始化從父類繼承下去的成員變量。
super關(guān)鍵字: super關(guān)鍵字代表的是父類的引用空間鸣峭。
super關(guān)鍵字解決的問題:
1. 子父類存在同名的成員時宏所,在子類中默認是會先訪問子類的成員,可以通過super關(guān)鍵字指定訪問父類的成員叽掘。
2. 創(chuàng)建子類對象時默認會先調(diào)用父類的無參構(gòu)造函數(shù)楣铁,可以通過super關(guān)鍵字指定調(diào)用父類的構(gòu)造函數(shù)。
super關(guān)鍵字調(diào)用構(gòu)造函數(shù)要注意的細節(jié):
1. super關(guān)鍵字調(diào)用父類的構(gòu)造函數(shù)時更扁,super語句必須位于構(gòu)造函數(shù)中的第一個語句盖腕。
2. super赫冬、this調(diào)用構(gòu)造函數(shù)時,不能同時存在同一個構(gòu)造函數(shù)中溃列,因為兩個語句都需要第一.
父類的功能無法滿足了子類的需求劲厌,這時候我們需要進行方法 的重寫。
方法重寫的前提: 必須存在繼承的關(guān)系听隐。
方法的重寫:子父類存在著同名的函數(shù)稱作為方法的重寫补鼻。
方法重寫要求:
1. 方法重寫時,子父類的函數(shù)名與形參列表必須一致雅任。
2. 方法重寫時风范,子類的權(quán)限修飾符必須要大于或者等于父類的權(quán)限修飾符。
3. 方法重寫時沪么,子類的返回值類型必須小于或者等于父類 的返回值類型硼婿。
4. 方法重寫時, 子類拋出的異常類型必須小于或者等于父類拋出的異常類型禽车。
方法重載: 在一個類中存在兩個或者兩個以上的同名函數(shù)稱作為方法重載寇漫。
方法的重載要求:
1. 函數(shù)名一致,
2. 形參列表不一致(形參的個數(shù)或者是形參對應(yīng)的類型不一致)
3. 與返回值類型無關(guān)殉摔。
extends
//動物 大類型
class Animal{
}
//魚
class Fish extends Animal{
}
//父類
class Fu{
String name;
public Fu(String name){
this.name = name;
}
public Animal eat() throws Exception {
System.out.println(name+"吃番薯...");
return new Animal();
}
}
//子類
class Zi extends Fu{
public Zi(String name){
super(name); //調(diào)用父類一個參數(shù) 的構(gòu)造函數(shù)
}
//方法的重寫
public Animal eat() throws RuntimeException {
System.out.println(name+"吃點開胃菜..");
System.out.println(name+"喝點湯...");
System.out.println(name+"吃點龍蝦...");
System.out.println(name+"吃點鮑魚...");
System.out.println(name+"喝點酒...");
System.out.println(name+"喝糖水...");
return new Animal();
}
}