20145101《Java程序设计》第4周学习总结
20145101《Java程序設計》第4周學習總結
教材學習內容總結
第六章 繼承與多態
- 繼承:避免多個類間重復定義共同行為。
把相同代碼提升為父類
運用extends關鍵字的子類會繼承擴充父類行為
多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那么多個類無需再定義這些屬性和行為,只要繼承單獨的那個類即可。
多個類可以稱為子類,單獨這個類稱為父類或者超類。
子類可以直接訪問父類中的非私有的屬性和行為。
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 關鍵字讓類與類之間產生繼承關系。
public class Game1SwordsMan extends Game1Role {
public void fight(){
System.out.println("揮劍攻擊");
}
} - 多態:單一接口操作多種類型的對象。
is-a關系定義:子類只能繼承一個父類,“是一種”關系。
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對象,這就是多態。
重新定義:在繼承父類之后,定義與父類中相同的方法部署,但執行內容不同。
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();}}抽象方法:如果某方法區塊中真的沒有任何程序代碼操作,可以使用abstract表示該方法為抽象方法,不用撰寫{ }區塊,直接“;”結束即可。
含有抽象方法的類,一定要在class前標示abstract;子類如果繼承抽象類,意識繼續標示abstract,另一種就是操作方法。
繼承語法的細節
super關鍵字表示父類的意思。this變量代表對象本身。即super()和this()類似,區別是,super從子類中調用父類的構造方法,this()在同一類內調用其它方法。
調用super()必須寫在子類構造方法的第一行,否則編譯不通過。每個子類構造方法的第一條語句,都是隱含地調用super()。
public class OceanWorld1Anemonefish extends OceanWorld1Fish {public OceanWorld1Anemonefish(String name) {super(name);}@Overridepublic void swim() {System.out.printf("小丑魚 %s 游泳%n", name);}}
第七章 接口與多態
接口:可以理解為一種特殊的類,里面全部是由全局常量(static final)和公共的抽象方法所組成。
接口的定義格式:接口的數據成員,只允許被public, static, final修飾。
接口中的數據成員都為static final類型,必須進行初始化,且接口的數據成員的值不能被修改,允許省略static, final關鍵字。接口中的方法必須是“抽象方法”,不能有方法體,允許省略public及abstract關鍵字
接口的方法成員,只允許被public, abstract修飾。接口的實現:
接口不能用new運算符直接產生對象,必須利用其特性設計新的類,再用新類來創建對象
與抽象類一樣,接口要使用也必須通過子類,子類通過implements關鍵字實現接口。接口的繼承:接口不能繼承一個抽象類,卻可以通過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;}}}
教材學習中的問題和解決過程
代碼調試中的問題和解決過程
本周代碼托管截圖
其他(感悟、思考等,可選)
java學習是一條長久的道路,有坎坷,也有解決問題的喜悅。這一周主要學習了六七章節的內容,首先主要是一個RPG、SwordsMan這兩個程序,但其不僅僅是一個程序,是多個程序繼承在一起才能運行,我們正一步一步在添磚加瓦,使程序日趨完善,功能越發強大。這周的學習讓我體會到java語言功能的多樣,操作接口、繼承類,有時相同的問題可以有不同的方法解決,就需要多學習,選擇效率高、準確度高的方法來解決問題。 學習進度條
| 代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
|---|---|---|---|---|
| 目標 | 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學習筆記(第8版)
- 《Java學習筆記(第8版)》學習指導
轉載于:https://www.cnblogs.com/verymoment/p/5327273.html
總結
以上是生活随笔為你收集整理的20145101《Java程序设计》第4周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好听的迷你世界名字女
- 下一篇: Linux常用压缩与解压缩命令