20155305喬磊2016-2017-2《Java程序設計》第四周學習總結

20155305喬磊2016-2017-2《Java程序設計》第四周學習總結

教材學習內容總結

繼承

  • 繼承就是避免多個類間重復定義共同行為。
  • 面向對象中,子類繼承父類,就是把程序中相同的代碼部分提升為父類。
  • extends關鍵字,表示前者會擴充后者的行為,即繼承后者的行為。fight()為SwordsMan擴充的Role沒有的行為。
  • private成員也會被繼承,不過子類無法直接存取,必須通過父類提供的方法存取。

is-a(是一種)關系

  • 子類只能繼承一個父類,這種子類父類之間的關系就是is-a關系。
  • 檢查語法邏輯是否正確,方式是從=右邊往左讀:判斷右邊是不是一種左邊。例:Role role1=new SwordsMan();即判斷SwordsMan是不是一種Role?若是則語法正確,反之則編譯失敗。
  • 強制讓后者是一種前者:Role role1=new SwordsMan();SwordsMan swordsman=(SwordsMan) role1;

多態

  • 使用單一接口操作多種類型的對象,具有更高的可維護性。
  • Java以繼承及界面來實現多態,是次態多態的一種實現。

      public class RPG2{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("Moinca");magician.setLevel(1);magician.setBlood(100);showBlood(swordsMan);   //SwordsMan是一種RoleshowBlood(magician);}static void showBlood(Role role)   //聲明為Role類型{System.out.printf("%s 血量 %d%n",role.getName(), role.getBlood());}}

重新定義行為

  • SwordsMan與Magician的fight()方法簽署的都是public void fight(),操作接口相同,只是方法操作內容不同,因此,可以將fight()方法提升至Role類中定義。
  • 如果傳入drawFight()的是SwordsMan,role參數參考的就是SwordsMan實例,操作的就是SwordsMan上的fight()方法定義。
  • 重新定義父類中某個方法時,子類必須撰寫與父類方法中相同的簽署。可以在子類中某個方法前使用@Override要求編譯程序檢查該方法是不是真的重新定義了父類中某個方法,如果不是會引發編譯錯誤。
  • 對于父類中的方法權限,只能擴大不能縮小。

抽象方法 抽象類

  • 抽象方法:某方法區塊中沒有任何程序代碼操作,用abstract表示該方法為抽象方法,不用撰寫{}區塊,直接";"結束即可。
  • 抽象類:內含抽象方法的類,一定要在class前標示abstract,表示類定義不完整,不能用來生成實例。

protected

  • 被聲明為protected的成員,相同包中的類可以直接存取,不同包中的類可以在繼承后的子類直接存取。
  • private、無關鍵字、protected、public權限依次遞增。

構造函數

  • 類有繼承關系時,會先進行父類定義的初始流程,再進行子類定義的初始流程。
  • 父類中可以重載多個構造函數,如果子類構造函數中沒有制定執行父類中哪個構造函數,默認會調用父類中無參數構造函數。
  • this()super()只能擇一調用,并且要寫在構造函數第一行執行。

final關鍵字

  • class或方法被聲明為final,表示這是最后一個,不會再有子類或子類不可以重新定義方法。

java.lang.Object

  • java.lang.Object是最上層父類,Java中所有對象一定是一種Object。

接口的默認

  • Java中可以使用interface來定義抽象的行為和外觀。
  • 接口中的方法沒有操作時一定得是公開且抽象的。
  • 接口可以繼承別的接口,也可以同時繼承兩個以上的接口,同樣也是用extends關鍵字,這代表了繼承父接口的行為。

匿名內部類

  • 臨時繼承某個類或操作某個接口并建立實例,由于這類子類或接口操作類只使用一次,不需要為這些類定義名稱,可以使用匿名內部類。

教材學習中的問題和解決過程

  • 問題:本來像書上p167中的fight()方法運行都沒有問題,但是按照書上p169抽象方法與抽象類中,將前面的Role.java中的fight()方法改成如下的格式public abstract void fight();之后,RPG.java就運行不了了。
  • 解決方法:待解決。

代碼調試中的問題和解決過程

  • 問題:Guest訪客名稱,訪客名單在run的時候出現了問題
    1071527-20170317233618885-1307098996.png
    后來在run edit中發現自己把各項都改成了Guest
    1071527-20170317233758995-323342799.png
  • 解決方法:把run edit中各項改了
    1071527-20170317234026573-2040249044.png
    運行結果正確
    1071527-20170317234100932-1426291407.png

代碼托管

1071527-20170319190830479-2108887282.png

上周考試錯題總結

  • 填空:Linux Bash中,(grep )命令可以進行全文搜索。
  • 填空:System.out.println(“”+52+25);的結果是(5225)
  • 填空:System.out.println(52+25+””);的結果是(77)
  • 填空:p86 命令行下編譯Guess.java的命令是(javac -d . Guess.java)
  • 填空:兩個Integer對象比較大小,可以使用(comareTo())方法
    上網查Interger對象的比較方法寫的是ValueOf()。老師答案是comareTo()。不太理解。
  • 填空:“30”轉化為byte類型的30的語句是(Byte.parseByte(“30”);)。

學習進度條

代碼行數(新增/累積)博客量(新增/累積)學習時間(新增/累積)重要成長
目標3000行20篇400小時
第一周200/2001/118/18
第二周153/3531/218/36
第三周356/7091/324/60
第四周450/12591/428/85

參考:軟件工程軟件的估計為什么這么難,軟件工程 估計方法

  • 計劃學習時間:30小時

  • 實際學習時間:28小時

  • 改進情況:計劃學習時間由于上周沒有達成,所以這周仍然定為30小時,學習時間有所提高。

  • 有空多看看現代軟件工程 課件 軟件工程師能力自我評價表

參考資料

  • Java學習筆記(第8版)

  • 《Java學習筆記(第8版)》學習指導

轉載于:https://www.cnblogs.com/20155305ql/p/6537588.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393453.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393453.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode29. 兩數相除(位運算)

給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算符。 返回被除數 dividend 除以除數 divisor 得到的商。 整數除法的結果應當截去(truncate)其小數部分,例如:…

【eclipse轉idea的第一天】配置idea

為什么80%的碼農都做不了架構師?>>> 導入maven項目 設置maven(全局) 為了不然才轉idea的碼友們重復我犯過的錯,我這兒截圖步驟說明下: 這里是列表文本這里是列表文本idea的設置有兩種:全局,局部(我這么叫的…

node.js web框架_使用Node.js進行Web爬取的終極指南

node.js web框架So what’s web scraping anyway? It involves automating away the laborious task of collecting information from websites.那么,什么是網絡抓取? 它涉及自動化從網站收集信息的艱巨任務。 There are a lot of use cases for web s…

java局部內部類 final_Java的局部內部類以及final類型的參數和變量

Thinking In Java里面的說法(***正確的說法): 如果定義一個匿名內部類,并且希望它使用一個在其外部定的對象,那么編譯器會要求其參數引用是final 的。publicclassTester {publicstaticvoidmain(String[] args) {A a newA();C c newC();c.shou…

Vmware 安裝虛擬工具 (二)

打開虛擬機,以root超級用戶登陸,菜單欄選擇虛擬機,install安裝虛擬機 拷貝虛擬工具到 在根目錄下建立文件夾,并將工具拷貝到該文件夾,例如vmtool 打開終端,進入該目錄開始安裝 如圖,進入目錄解壓…

git與svn的區別 ?Git 與 SVN那個更好?

git與svn的區別 : http://www.360doc.com/content/12/1228/20/11220452_256857021.shtml 在版本控制系統的選型上,是選擇Git還是SVN? 對于開源項目來說這不算問題。使用Git極大地提高了開發效率、擴大了開源項目的參與度、 增強了版本控制系統…

強化學習簡介

by ADL通過ADL Reinforcement Learning is an aspect of Machine learning where an agent learns to behave in an environment, by performing certain actions and observing the rewards/results which it get from those actions.強化學習是機器學習的一個方面&#xff0…

leetcode1111. 有效括號的嵌套深度(棧)

給你一個「有效括號字符串」 seq,請你將其分成兩個不相交的有效括號字符串,A 和 B,并使這兩個字符串的深度最小。 不相交:每個 seq[i] 只能分給 A 和 B 二者中的一個,不能既屬于 A 也屬于 B 。 A 或 B 中的元素在原字…

利用Arcgis for javascript API繪制GeoJSON并同時彈出多個Popup

1.引言 由于Arcgis for javascript API不可以繪制Geojson,并且提供的Popup一般只可以彈出一個,在很多專題圖制作中,會遇到不少的麻煩。因此本文結合了兩個現有的Arcgis for javascript API擴充庫,對其進行改造達到繪制Geojson并同…

java 線程簡介_java多線程介紹

java多線程介紹多線程的基本實現進程指運行中的程序,每個進程都會分配一個內存空間,一個進程中存在多個線程,啟動一個JAVA虛擬機,就是打開個一個進程,一個進程有多個線程,當多個線程同時進行,就…

webpack入門——構建簡易版vue-cli

用vue-cli1/2搭建一個vue項目時,可以看到有很多關于webpack配置的文件。我們不需要知道那些繁瑣的配置文件有什么作用,只需在控制臺輸入npm run dev,項目自動啟動,我們就可以愉快的寫業務代碼了。 雖然vue-cli幫我們做好了一切&am…

leetcode43. 字符串相乘

給定兩個以字符串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字符串形式。 示例 1: 輸入: num1 “2”, num2 “3” 輸出: “6” 代碼 class Solution {public String multiply(String num1, String num2) {if(n…

作業二:個人博客作業內容:需求分析

作業二:個人博客作業內容:需求分析 怎樣與用戶有效溝通獲取用戶的真實需求?訪談,正式訪談系統分析員將提出一些事先準備好的具體問題;非正式訪談中,分析人員將提出一些用戶可以自由回答的開放性問題&#…

HBase數據備份及恢復(導入導出)的常用方法

一、說明 隨著HBase在重要的商業系統中應用的大量增加,許多企業需要通過對它們的HBase集群建立健壯的備份和故障恢復機制來保證它們的企業(數據)資產。備份Hbase時的難點是其待備份的數據集可能非常巨大,因此備份方案必須有很高的…

react和react2_為什么React16是React開發人員的福氣

react和react2by Harsh Makadia通過苛刻馬卡迪亞 為什么React16是React開發人員的福氣 (Why React16 is a blessing to React developers) Just like how people are excited about updating their mobile apps and OS, developers should also be excited to update their fr…

jzoj4598. 【NOIP2016模擬7.9】準備食物

一個th的題(a gensokyo) 難度系數在該知識點下為$2.1$ 區間xor我們很明顯會想到trie樹,將每一個區間$l~r$異或和拆成$sum[l-1]$ $sum[r]$兩個數的異或 注意到二進制的性質,比當前低的位即使都取1加起來都沒有這位選1答案高&#x…

java number轉string_Java Number類, Character類,String類

字符串在Java編程中廣泛使用,字符串就是一系列字符(由一個個的字符組成)。 在Java編程語言中,字符串被視為對象。Java平臺提供String類來創建和操作字符串。1. 創建字符串創建字符串的最直接方法是 -String str "Hello world!";每當它在代碼中…

Android商城開發系列(二)——App啟動歡迎頁面制作

商城APP一般都會在應用啟動時有一個歡迎界面,下面我們來實現一個最簡單的歡迎頁開發:就是打開商城App,先出現歡迎界面,停留幾秒鐘,自動進入應用程序的主界面。 首先先定義WelcomeActivity布局,布局非常簡單…

DELL安裝不了mysql_Windows 版本 Mysql 8.x 安裝

1、官網下載安裝包百度網盤鏈接:https://pan.baidu.com/s/1cFRbQM5720xrzMxbgjPeyA提取碼:xlz72、解壓安裝包并新建一個文件夾作為安裝目錄(mysqlInstall)3、配置 Mysql 環境變量4、在解壓好的目錄下新建一個 my.ini 文件(注意:my.ini 文件和…

lambda 使用_如何使用Lambda和API網關構建API

lambda 使用Do you want to access your database, control your system, or execute some code from another website? An API can do all of this for you, and they’re surprisingly easy to set up.您是否要訪問數據庫,控制系統或從其他網站執行一些代碼&…