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