20165214 2017-2018-2 《Java程序設計》第四周學習總結
教材學習內容總結
- 每一個子類只能有一個父類,而一個父類能夠有多個子類。可使用關鍵字
extends
來定義一個類的子類:class 子類名 extends 父類名
。不加extends關鍵字時,默認爲Object類,Object類是任何類(除了自己)的祖先類。
- 簡單的說,子類擁有父類的全部(除了private類及不一樣包的友好類),同時能夠擁有本身新的東西。
- 若是一個類A想經過一個其餘類B的子類C創造對象來調用它的變量或者方法:①若要調用的是子類C內部新定義的而不是繼承的,只要C與A同包便可; ②若要調用的是C繼承下來的,只要C所繼承的祖先類與A同包便可。
- 子類能夠經過繼承的方法來操做未繼承的變量。
instanceof
運算符:除了以前在第二章總結的之外,還有:當子類創造的對象與父類去使用instanceof運算符時,得出的結果也是true。
- 當子類新聲明的變量名與繼承的變量名相同時,繼承的變量名會被隱藏。可是咱們仍能夠經過繼承的方法來對隱藏的變量名進行操做。(繼承的方法所操做的成員變量必定是被子類繼承或隱藏的成員變量。)
- 方法重寫:要求新的方法的類型與父類相應方法一致或者是父類的方法的類型的子類型,而且這個方法的名字、參數個數、參數的類型和父親的方法徹底相同。重寫方法能夠操做繼承的變量、方法,也能夠操做子類新聲明的成員變量、方法。若是子類想要使用被隱藏的方法或者成員變量,需使用super。注意,重寫方法時不容許下降方法的訪問權限。
super
的使用方法:經過命令super.[成員變量]和super.[方法]來分別使用被隱藏的變量和方法。在父類中定義多個構造方法時,應當包括一個不帶參數的構造方法,這是由於若是在子類中沒有寫出super關鍵字,默認地有super()
。
final
關鍵字。final關鍵字能夠修飾類、成員變量和方法中的局部變量。①修飾類:被修飾的類不能有主類。
②修飾父類的方法:子類不能對被修飾的方法進行重寫
③修飾變量:被修飾的變量變爲常量,常量在運行期間不能發生變化。
- 上轉型對象。經過把子類建立的對象的引用賦給父類建立的對象來獲得上轉型對象。上轉型對象不能操做子類新增的成員變量與方法,可是能夠操做子類繼承或隱藏的成員變量或方法。注意的是,若是子類重寫了父類的靜態方法,則子類對象的上轉型對象不能調用子類的重寫靜態方法,只能調用父類的靜態方法。
- 父類的方法被子類重寫時,能夠各自產生本身的功能行爲。
- 關鍵字
abstract
:①修飾方法:被修飾的方法只能聲明不能運行。
②修飾類:被修飾的類中能夠有abstract方法,也能夠有非abstract方法。而沒被修飾的類只能有非abstract方法。
- abstract父類的abstract子類能夠繼承或重寫父類的abstract方法,可是abstract父類的非abstract子類必須重寫父類的abstract方法。
- abstrcat的類只能聲明對象可是不能建立對象,可是該對象能夠成爲其子類的上轉型對象。
- abstract不能和final同時修飾。
- abstract類在實際中很好用,由於它注重面向對象而不是面向類。
- 開閉原則是對擴展開放,對修改關閉。我以爲在這其中abstract起了很大的做用。遵照開閉原則的系統易於維護。
- 使用
interface
來定義一個接口。接口=接扣聲明+接口體
。接口體中只有常量(權限爲public,且爲static常量)和抽象方法(權限爲public,爲stract型),沒有變量。
- public接口能夠被任意一個類實現,友好接口可被同一個包裏的接口實現。
- 接口也能夠經過extens來繼承。
- import語句能夠引入包的類也能夠引入包的接口。
- 經過類來實現接口:在類聲明中使用關鍵字implements來聲明一至多個接口。非抽象類實現了某個接口,必定要重寫這個接口中的全部方法(要去掉abstract,體現public)。抽象類實現了某個接口,既能夠重寫,也能夠不重寫。
- 能夠經過接口名來訪問常量,也能夠經過實現接口的類來直接使用。
接口回調:簡單的說,接口回調就是爲了可以調用某個接口中的方法。具體操做:類A實現接口B;A建立對象a;B聲明變量b;b=a;java
教材學習中的問題和解決過程
- 問題1:在書裏的程序裏看到了一個
類名.intValue()
,不懂這是什麼意思。
- 問題1解決方案:上網查了一下,在這個連接裏發現瞭解決的方法。
問題2:在寫第五章的課後習題的時候,發現了這樣一個問題。
git
問題2解決方案:在寫這個程序的時候,我忽略了不能直接使用空對象,修改程序時改錯了地方,致使了這個結果。因而我進入程序,把主函數的程序恢復原來的樣子,而後在
這個函數裏面對返回值直接進行了輸出,解決了問題。編程
代碼調試中的問題和解決過程
上週考試錯題總結
- 錯題1:15&250的值爲? 這道題答案錯了。我算出來是10,同窗們也是,可是答案裏沒有這個選項。
- 錯題2:float x = 0.f;double y = 0.5,則x==y的結果爲flase。這道題婁老師在課下給了我很好的解答,讓我知道了浮點類型的編碼方式。
- 錯題3:byte b=byte(-150),則b的值爲106。這是正確的。錯誤緣由是我錯把byte的範圍記成了-256~255..應該是-128~127。
- 錯題4:課本P23程序在命令行運行時,輸入ctrl+c能夠結束阻塞。這是正確的。
- 錯題5:'\ucafe'是正確的char型變量聲明。\u表示16進制,cafe我把它錯覺得是字符串。。
- 錯題6:char str[] = " hello"是錯誤的初始化語句。由於hello是string型。
- 錯題7:複製數組不能使用「=」。
- 錯題8:P29的程序所用的是選擇排序法,不是冒泡排序法,這道題答案也錯了。
- 錯題9:變量賦值boolean a = = false是不對的。錯題緣由:沒注意審題,忽略了是兩個「=」。
我發現這周的錯題除了兩道題是答案錯了之外,其餘好幾道題都是本身太粗心才錯的。。審題不夠細心。
其餘
不得不說,這周我又發現了婁老師「考試就是一種學習」這句話的正確性。不管是線上藍墨雲裏的測試,仍是線下課堂上的測試,都讓我有很大的收穫。由於對於咱們的教材,若是順着它有耐心、專心地看下來,跟着敲一敲代碼,寫一寫博客,實際上是不會遇到什麼問題的。這時候若是沒有測試,咱們就不能發現本身的問題(由於書裏的教材只是一部分,更關鍵的是看本身能不能經過教材的學習作到觸類旁通,而測試能夠幫咱們看到這些)。
基於測試,我也可以提出一些本身真正不會、不懂的問題,而這些問題在老師、同窗們的解答下,使我印象深入, 學習也就事倍功半。
另外一方面,我發現了一個本身的不足。就是在時間緊張的時候編程序,編出來的程序格式比較亂,沒有美感。這在咱們本週的課上測驗上就暴露了出來。之後需對這個問題進行改正。學習
學習進度條
目標 |
5000行 |
30篇 |
400小時 |
|
第一週 |
36/36 |
1/1 |
8/8 |
|
第二週 |
432/468 |
2/3 |
15/23 |
|
第三週 |
964/1432 |
1/4 |
16/39 |
|
第四周 |
725/2157 |
1/5 |
14/53 |
|
計劃學習時間:15小時測試
實際學習時間:14小時編碼
改進狀況:效率有所提升,提早完成任務。url