java继承的终极奥义_java学习笔记12-继承
繼承就是子類繼承父類的特征和行為
有時候單一劃分某個類別并不能處理所有情況,某些類別下有明顯不同的子類,這些子類雖然擁有類似的行為和屬性,但是他們各自發生的這些行為的方式或者屬性對某些結果的影響是不一樣的,這就需要劃分出更多細致的類別。
比如之前類和對象筆記中,球員這個類別,球員都有球衣,號碼,得分這些屬性,打球的行為,但是很明顯,籃球運動員和足球運動員在這些屬性和行為上是有區別的?;@球運動員打球可以用手,胳膊。足球運動員打球可以腳踢頭頂?;@球運動員一場得分兩位數很正常,足球運動員顯然不可能一場得分兩位數。
基于這個分析。我們有必要把這個類拆分成籃球運動員類和足球運動員類。首先我們把所有球員的公共屬性和公共行為抽象出來,形成一個類。然后通過繼承,讓兩個子類都去享有這個類的公共屬性和行為,但是具體行為依靠自己來實現。(測試框架中的測試基類)
java提供了extends關鍵字來實現繼承功能
首先新建一個球員類Player:
packagelesson;public classPlayer {public int number; //號碼
public int score; //得分
public String position; //司職
public String name; //姓名
public voidplayBall(){
System.out.println("姓名:"+this.name);
System.out.println("號碼:"+this.number);
System.out.println("得分:"+this.score);
System.out.println("司職:"+this.position);
}
}
接下來創建籃球運動員類和足球運動員類
packagelesson;public class BasketBallPlayer extendsPlayer{public static voidmain(String[] args){
BasketBallPlayer player1= newBasketBallPlayer();
player1.name= "jordan";
player1.number= 23;
player1.position= "得分后衛";
player1.score= 33;
player1.playBall();
}
}
?
packagelesson;public class FootBallPlayer extendsPlayer {public static voidmain(String[] args){
FootBallPlayer player2= newFootBallPlayer();
player2.name= "齊達內";
player2.number= 10;
player2.position= "中場";
player2.score= 2;
player2.playBall();
}
}
?
雖然這兩個類中沒有任何屬性和方法,但是能點出Player類的屬性,還能調用父類的方法。說明它繼承到了父類的屬性和方法。
需要注意的是:子類并不能繼承父類的構造方法
創建子類對象時,會先調用父類的構造方法,然后調用自己的構造方法。
由于每個類都默認有一個默認的無參數的構造方法,所以為了看出效果。需要顯示的創建這幾個類的構造方法。
packagelesson;public classPlayer {public int number; //號碼
public int score; //得分
public String position; //司職
public String name; //姓名
publicPlayer(){
System.out.println("我是Player");
}public voidplayBall(){
System.out.println("姓名:"+this.name);
System.out.println("號碼:"+this.number);
System.out.println("得分:"+this.score);
System.out.println("司職:"+this.position);
}
}
packagelesson;public class BasketBallPlayer extendsPlayer{publicBasketBallPlayer(){
System.out.println("我是BasketBallPlayer");
}public static voidmain(String[] args){
BasketBallPlayer player1= newBasketBallPlayer();
player1.name= "jordan";
player1.number= 23;
player1.position= "得分后衛";
player1.score= 33;
player1.playBall();
}
}
packagelesson;public class FootBallPlayer extendsPlayer {publicFootBallPlayer(){
System.out.println("我是FootBallPlayer");
}public static voidmain(String[] args){
FootBallPlayer player2= newFootBallPlayer();
player2.name= "齊達內";
player2.number= 10;
player2.position= "中場";
player2.score= 2;
player2.playBall();
}
}
?
?
結果說明:在創建子類對象時,會先調用父類的構造方法,然后調用自己的構造方法
這個結果并不能說明子類在繼承父類時,也繼承了父類的構造方法,只能說默認會調用而已。
總結
以上是生活随笔為你收集整理的java继承的终极奥义_java学习笔记12-继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab绘制三元位置函数,matla
- 下一篇: 基于Java jsp+mysql+Spr