方法重寫
概念
在Java中罐旗,子類繼承父類中的方法,但有時(shí)父類方法并不能滿足子類要求位迂,這就需要子類對(duì)繼承的方法進(jìn)行從新定義访雪,這就是方法重寫详瑞,方法重寫又稱方法覆蓋。
作用
通過方法重寫臣缀,實(shí)現(xiàn)子類的要求坝橡。
注意事項(xiàng)
方法重寫時(shí),方法的返回值類型 方法名 參數(shù)列表都要與父類一樣精置。(同名计寇,同參,同返回)
子類方法覆蓋父類方法脂倦,必須要保證權(quán)限大于等于父類權(quán)限番宁。
方法重寫時(shí),子類不能縮小父類拋出的異常
示例:以寵物赖阻、寵物狗蝶押、寵物貓為例。
class Pet {//寵物
public void sound(){
System.out.println("寵物叫");
}
}
class Dog extends Pet {//狗
//方法重寫
@Override
public void sound() {
System.out.println("汪汪汪");
}
}
class Cat extends Pet{//貓
//方法重寫
@Override
public void sound(){
System.out.println("喵喵喵");
}
}
public class PetShop{//寵物店
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound();//調(diào)用狗的sound()
Cat cat = new Cat();
cat.sound();//調(diào)用貓的sound()
}
}
解析:
創(chuàng)建寵物類火欧,貓類棋电、狗類繼承寵物類,貓類苇侵、狗類重寫寵物類的sound方法赶盔。
運(yùn)行結(jié)果:
汪汪汪
喵喵喵
方法重載
概念
方法重載是指在一個(gè)類中定義多個(gè)同名的方法,但要求每個(gè)方法具有不同的參數(shù)的類型或參數(shù)的個(gè)數(shù)衅檀。
作用
通過方法重載實(shí)現(xiàn)方法的多種可能性招刨。
注意事項(xiàng)
在同一個(gè)類中霎俩,方法重載時(shí)哀军,方法的方法名要與類名一樣,每個(gè)方法的參數(shù)個(gè)數(shù)打却、類型杉适、順序不同。(同名柳击,不同參猿推,與返回?zé)o關(guān))
示例:
public void play(){
System.out.printf("我的名字是%s,我的成績是%d,我的學(xué)號(hào)是%s",this.name,this.score,this.no);
}
public int play(int time){
return 0;
}
s1.play(1);//調(diào)用的是含參的方法
s2.play();//調(diào)用的是無參的方法
區(qū)別
- 方法重載:
- 在同一個(gè)類中(包括從父類繼承的) 方法 同名 不同參 與返回值無關(guān)
- 方法重寫:
- 方法重寫存在于繼承關(guān)系中
- 父子類之間的方法 同名,同參捌肴,同返回