Role role1=new SwordsMan()
;就是判斷SwordsMan
是否是一種Role
?如果則語法正確,反之則編譯失敗。相關練習:連接1,連接2,連接3 ,運行結果以下在繼承父類以後,定義與父類中相同的方法部署,但執行內容不一樣,這稱爲從新定義。
此處應該注意在從新定義父類中某個方法的時候,必定要注意子類與父類的簽署必須相同。這個問題看似不起眼,可是在本身學習過程當中就有發生,在下面的代碼調試部分由做出詳細的說明,所以爲了防止打錯字,能夠在子類中某個方法前標註@Override
,要求編譯程序檢查,是否真的從新定義了父類中的某個方法。這部分的練習與結果以下:連接1,連接2,連接3
html
1.在上面的學習中,Role2中的fight中沒有任何程序操做,這時候可使用adstract
表示該方法爲抽象方法,不用撰寫{}區塊,直接「;」結束便可。例如
public abstract class Role{ ..... public abstract void fight(); }
2.注意內含抽象方法的類,必定要在class前表示abstract。
3.抽象類不能使用new生成對象。
4.子類繼承抽象類方法:1.繼續標示該方法爲abstract;2.操做抽象方法。
相關練習:連接1,連接2,連接3,運行結果以下圖
java
被聲明爲protected
的成員,相同包中的類能夠直接存取,不一樣包中的類能夠在繼承後的子類直接存取。進行練習,連接1,連接2,連接3,運行結果以下圖
git
在JAVA中若是想取得父類的方法定義,能夠在調用方法前,加上super關鍵字。相關練習連接1,連接2,連接3
程序結果以下圖
編程
this()
與super()
只能選擇一個調用,並且必定要在構造函數第一行執行。對於再也不有用的對象,JVM有垃圾收集機制,收集到的垃圾對象所佔據的內存空間,會被垃圾收集器釋放。網絡
interface
關鍵字定義。public abstract
。public abstract
。在接口中能夠定義常數,但只能定義public static final
的常數,在程序中能夠省略。例如:連接1,連接2,結果以下圖
dom
接口能夠繼承別的接口,也能夠同時繼承兩個以上的接口,一樣也是用extends關鍵字,這表明了繼承父接口的行爲。ide
enum能夠同於定義枚舉常量。函數
protected
成員時,定義的toString()
方法中,書上既編寫了使用getName()
來取得姓名,也編寫了直接用this,name
來取值,那對於protected
成員,是兩種均可以嗎?getName()
刪了,用this.name
也能夠取得姓名,相反用getName()
方法也是能夠取到值的,比較出了protected
與private
的區別。同時對於getName()
方法,既然是已經聲明瞭的方法那麼就對於全部狀況均可以使用。public static final
來修飾。public
或者public abstract
,但能夠經過編譯,是爲何?解決:經過查詢,接口默認爲public abstract,因此即便不加亦不會出錯。學習
1.在從新定義行爲的時候,不知道爲何,我在子類中從新定義的fight老是出錯,以下圖
this
public abstract class GuessGame { public void go(){ int number=(int) (Math.random()*10); int guess; do{ print("輸入數字:"); guess=nextInt(); }while(guess!=number); print("猜中了"); } //public void println(String text){ //print(text); //} public abstract void print(String text); public abstract int nextInt(); }
import java.util.Scanner; public class ConsoleGame extends GuessGame { private Scanner a=new Scanner(System.in); @Override public void print(String text){ System.out.println(text); } //@Override // public void println(String text){ //System.out.println(text); //} @Override public int nextInt(){ return a.nextInt(); } }
2.在學習繼承父類接口的時候,當我定義了doswim方法時,編譯老是不經過,而且還會出現如下提示:
解決:在上網搜索後發現,static修飾的方法稱爲靜態方法,那麼根據提示應該就是static修飾的方法出現了問題,檢查代碼,發現是將定義的內部類寫成了public類,致使編譯不經過。修改代碼,並再次運行,最終獲得正確結果。
代碼提交過程截圖:
代碼量截圖:
首先對於以前的內容,可能仍是不夠清楚自學的方法,即便以爲看的能夠了,考試時候就會驚覺學到的東西好像仍是欠缺不少,所以對於重點的掌握仍是須要改進。對於第6、第七章的學習,總的來講,任務仍是比較繁重的,但一每天的積累,一點點的累積,收穫仍是頗豐,慢慢的找到了一些本身學習的門路,好比能夠藉助網絡等。但願在往後的學習中能夠更透徹的掌握學習java的方法,能夠事倍功半,是最好不過的。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 20/20 | 1/4 | 20/20 | |
第二週 | 145/165 | 1/5 | 12/32 | |
第三週 | 411/576 | 1/6 | 16/48 | |
第四周 | 1021/1597 | 1/7 | 25/73 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:25小時
實際學習時間:25小時
改進狀況:這周天天都或多或少的敲了些代碼,天天分批次學習,同時對上週的內容溫習了一下,同時本身也有去設計一些簡單的程序,來結合對書本上的內容的學習。