20145101《Java程序设计》第4周学习总结
20145101《Java程序設(shè)計》第4周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
第六章 繼承與多態(tài)
- 繼承:避免多個類間重復(fù)定義共同行為。
把相同代碼提升為父類
運用extends關(guān)鍵字的子類會繼承擴充父類行為
多個類中存在相同屬性和行為時,將這些內(nèi)容抽取到單獨一個類中,那么多個類無需再定義這些屬性和行為,只要繼承單獨的那個類即可。
多個類可以稱為子類,單獨這個類稱為父類或者超類。
子類可以直接訪問父類中的非私有的屬性和行為。
public class Game1Role {
private String name;
private int level;
private int blood;
public int getBlood(){
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
} 通過extends 關(guān)鍵字讓類與類之間產(chǎn)生繼承關(guān)系。
public class Game1SwordsMan extends Game1Role {
public void fight(){
System.out.println("揮劍攻擊");
}
} - 多態(tài):單一接口操作多種類型的對象。
is-a關(guān)系定義:子類只能繼承一個父類,“是一種”關(guān)系。
public class RPG {public static void main(String[] args) {SwordsMan swordsMan = new SwordsMan();swordsMan.setName("Justin");swordsMan.setLevel(1);swordsMan.setBlood(200);Magician magician = new Magician();magician.setName("Monica");magician.setLevel(1);magician.setBlood(100);showBlood(swordsMan);showBlood(swordsMan);}static void showBlood(Role role) {System.out.printf("%s 血量 %d%n", role.getName(), role.getBlood());}}
在showBlood()方法中,通過Role類型既可以操作SwordsMan對象,也可以操作Magician對象,這就是多態(tài)。
重新定義:在繼承父類之后,定義與父類中相同的方法部署,但執(zhí)行內(nèi)容不同。
public class RPG3{public static void main(String[] args){SwordsMan swordsMan = new SwordsMan();swordsMan.setName("Justin");swordsMan.setLevel(1);swordsMan.setBlood(200);Magician magician = new Magician();magician.setName("Monica");magician.setLevel(1);magician.setBlood(100);drawFight(swordsMan);drawFight(magician);}static void drawFight(Role role){System.out.print(role.getName());role.fight();}}抽象方法:如果某方法區(qū)塊中真的沒有任何程序代碼操作,可以使用abstract表示該方法為抽象方法,不用撰寫{ }區(qū)塊,直接“;”結(jié)束即可。
含有抽象方法的類,一定要在class前標(biāo)示abstract;子類如果繼承抽象類,意識繼續(xù)標(biāo)示abstract,另一種就是操作方法。
繼承語法的細(xì)節(jié)
super關(guān)鍵字表示父類的意思。this變量代表對象本身。即super()和this()類似,區(qū)別是,super從子類中調(diào)用父類的構(gòu)造方法,this()在同一類內(nèi)調(diào)用其它方法。
調(diào)用super()必須寫在子類構(gòu)造方法的第一行,否則編譯不通過。每個子類構(gòu)造方法的第一條語句,都是隱含地調(diào)用super()。
public class OceanWorld1Anemonefish extends OceanWorld1Fish {public OceanWorld1Anemonefish(String name) {super(name);}@Overridepublic void swim() {System.out.printf("小丑魚 %s 游泳%n", name);}}
第七章 接口與多態(tài)
接口:可以理解為一種特殊的類,里面全部是由全局常量(static final)和公共的抽象方法所組成。
接口的定義格式:接口的數(shù)據(jù)成員,只允許被public, static, final修飾。
接口中的數(shù)據(jù)成員都為static final類型,必須進(jìn)行初始化,且接口的數(shù)據(jù)成員的值不能被修改,允許省略static, final關(guān)鍵字。接口中的方法必須是“抽象方法”,不能有方法體,允許省略public及abstract關(guān)鍵字
接口的方法成員,只允許被public, abstract修飾。接口的實現(xiàn):
接口不能用new運算符直接產(chǎn)生對象,必須利用其特性設(shè)計新的類,再用新類來創(chuàng)建對象
與抽象類一樣,接口要使用也必須通過子類,子類通過implements關(guān)鍵字實現(xiàn)接口。接口的繼承:接口不能繼承一個抽象類,卻可以通過extends同時繼承于多個接口。
import static java.lang.System.out;public class EnumGame {public static void main(String[] args) {play(EnumAction.RIGHT);play(EnumAction.UP);}public static void play(EnumAction action) {switch (action) {case STOP:out.println("播放停止動畫");break;case RIGHT:out.println("播放向右動畫");break;case LEFT:out.println("播放向左動畫");break;case UP:out.println("播放向上動畫");break;case DOWN:out.println("播放向下動畫");break;}}}
教材學(xué)習(xí)中的問題和解決過程
代碼調(diào)試中的問題和解決過程
本周代碼托管截圖
其他(感悟、思考等,可選)
java學(xué)習(xí)是一條長久的道路,有坎坷,也有解決問題的喜悅。這一周主要學(xué)習(xí)了六七章節(jié)的內(nèi)容,首先主要是一個RPG、SwordsMan這兩個程序,但其不僅僅是一個程序,是多個程序繼承在一起才能運行,我們正一步一步在添磚加瓦,使程序日趨完善,功能越發(fā)強大。這周的學(xué)習(xí)讓我體會到j(luò)ava語言功能的多樣,操作接口、繼承類,有時相同的問題可以有不同的方法解決,就需要多學(xué)習(xí),選擇效率高、準(zhǔn)確度高的方法來解決問題。 學(xué)習(xí)進(jìn)度條
| 代碼行數(shù)(新增/累積) | 博客量(新增/累積) | 學(xué)習(xí)時間(新增/累積) | 重要成長 | |
|---|---|---|---|---|
| 目標(biāo) | 5000行 | 30篇 | 400小時 | |
| 第一周 | 200/200 | 2/2 | 20/20 | |
| 第二周 | 200/400 | 1/3 | 18/38 | |
| 第三周 | 200/600 | 1/4 | 22/60 | |
| 第四周 | 200/800 | 1/5 | 30/90 |
參考資料
- Java學(xué)習(xí)筆記(第8版)
- 《Java學(xué)習(xí)筆記(第8版)》學(xué)習(xí)指導(dǎo)
轉(zhuǎn)載于:https://www.cnblogs.com/verymoment/p/5327273.html
總結(jié)
以上是生活随笔為你收集整理的20145101《Java程序设计》第4周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好听的迷你世界名字女
- 下一篇: Linux常用压缩与解压缩命令