1.術語「多態性」能夠理解爲「有許多形式」,一個「多態性引用」是能夠在不一樣時間指向不一樣類型對象的引用變量。利用多態性調用的方法可以由一個調用改變爲另外一個調用。html
2.在多數狀況下,綁定發生在編譯階段,但對於多態性引用,這種綁定要延遲到程序運行時才能執行。java
3.後綁定的效率低於編譯階段綁定效率,由於後綁定須要在程序執行期間決定所要綁定的定義方法。git
4.在Java中,能夠用兩種方式創建多態性引用:繼承方式和接口方式。程序員
1.一個引用變量能夠指向有繼承關係的任何類的任何對象。數組
2.一個object引用能夠指向任何對象,由於全部類歸根結底都是object類的後代類。安全
3.實際將調用的方法版本取決於對象的類型而不是引用變量的類型。數據結構
4.多態性的實質是,每一個類很清楚本身如何完成一個指定的行爲,並從某種意義來說,每一個類的行爲是相同的。多態機制容許用具備一致性但又獨特的方式處理相似的對象。函數
1.類名能夠用於聲明對象引用變量,相似地,接口名也能夠用作聲明對象引用變量的類型。一個接口引用變量能夠指向任何實現該接口的類的對象。學習
2.一個接口引用變量能夠指向實現該接口的任何類的任何對象。設計
3.像基於繼承的多態性引用同樣(父類名可用作方法參數的類型),接口名也能夠用作方法參數的類型,使得任何實現贊成接口的類對象均可以做爲參數傳給方法。
第10章 異常
1.錯誤和異常都是對象,表明非正常狀況或無效處理。
2.常見的異常問題:
3.處理異常的三種方法
在程序的某個位置集中處理異常。
未捕獲的異常:
1.異常拋出時所輸出的信息,提供了方法調用堆棧蹤影。
2.若是程序中不處理異常,則程序將非正常的終止運行,併產生關於描述在何處發生什麼異常的信息。第一行異常信息代表拋出的是什麼異常,並提供了拋出該異常的緣由。其餘行的信息是方法調用蹤影信息,指明異常在何處發生。經過調用被拋出異常類的方法,也能夠得到調用堆棧蹤影。getMessage方法返回一個字符串,解釋異常拋出的緣由;printStackTrace方法輸出調用堆棧蹤影信息。
1.ry-catch語句用來標誌可能拋出異常的語句塊,catch子句跟在try語句塊後,用於定義如何處理一種指定的異常。
2.try { 語句塊 } catch(類型名 標識符) { 語句塊 }
3.執行try語句塊時,若是沒有異常拋出,將繼續執行try-catch結構語句後的語句,這是正常狀況執行流程。
4.若是try語句塊執行的任何位置拋出了異常,而且存在catch子句,則控制當即轉移到相應的catch子句處理異常,即控制轉移到第一個與拋出異常相匹配的catch子句執行,執行完以後,跳出try-catch語句結構繼續執行。
1.有點像switch語句中的default語句,不管怎麼樣,這個語句必定會執行。若是有finally子句,那必定要排在catch子句後,除非沒有catch子句。不管try語句塊正常退出或因爲拋出異常而退出,都將執行finally子句,所以能夠利用finally子句管理資源或保證必定執行某段代碼。
1.若是在上級調用方法中仍然沒有捕獲和處理下級傳上來的異常,則控制將返回到上級調用方法的更上一級調用方法,這個過程叫作傳遞異常。異常將一直傳遞下去,直到被捕獲和處理,或直到異常傳遞出main方法,這時將終止程序的運行併產生錯誤信息。
2.若是在一個異常的發生處沒有處理和捕獲異常,控制將當即返回產生該異常的方法的上一級調用方法,所以能夠將程序設計爲在上級調用方法(外層調用)中捕獲和處理異常。
1.定義各類的類由繼承關係關聯在一塊兒。
Throwable是Error類和Exception類的父類。許多異常的類型都是由Exception
類派生,而在這些類中也有許多子類。
雖然這些高層的類定義在java.lang包裏,但定義各類異常的子類卻分散定義在其餘幾個包中,繼承關係能夠跨包越界。
2.自定義異常:咱們能夠從Exception類或它的後代類派生一個新類,定義本身的異常,選擇什麼類做爲父類由新異常所表明的問題和條件決定。
3.可檢測異常和不可檢測異常:Java中惟一不能檢測的異常是RuntimeException類的對象或該類的後代類服務對象。全部其餘的異常都是可檢測異常。
可檢測異常:必須由方法捕獲,或者必須在可能拋出或傳遞異常方法的throws子句中列出來。
在方法定義的聲明頭中加throws子句就明確了該方法在異常發生時將拋出異常或者傳遞異常。main方法之因此須要throws子句,是由於它所拋出的異常類由由Exception類派生,從而使得它的子類是一個可檢測異常。
不可檢測異常:無需throws子句。
1.標準I/O流有三種:
2. | 標準I/O流 |
---|---|
System.in | 標準輸入流 |
System.out | 標準輸出流 |
System.err | 標準錯誤流(輸出錯誤信息) |
問題1解決方案:另外創一個toString方法,把int返回爲String類型會極大帶來方便。
Java繼承是使用已存在的類的定義做爲基礎創建新類的技術,新類的定義能夠增長新的數據或新的功能,也能夠用父類的功能,但不能選擇性地繼承父類。這種技術使得複用之前的代碼很是容易,可以大大縮短開發週期,下降開發費用。
多態是同一個行爲具備多個不一樣表現形式或形態的能力。多態下容許將子類類型的指針賦值給父類類型的指針。
問題4:In order to determine the type that a polymorphic variable refers to, the decision is made
A . by the programmer at the time the program is written
B . by the compiler at compile time
C . by the operating system when the program is loaded into memory
D . by the Java run-time environment at run time
E . by the user at run time
解析:這道題目是在問是在什麼階段肯定多態變量所引用的類型,對於多數狀況下的這種請求,這種綁定是發生在編譯階段,可是對於多態性引用,這種綁定要延遲到程序運行才能執行,而且要綁定的方法取決於當時引用變量所引用的對象,這種被延遲的請求事件被稱爲後綁定或動態綁定
問題6:The term "exception propagation" means
A .an exception is caught by the first catch clause
B .an exception not caught by the first catch clause is caught by an outer (enclosing) catch clause
C .exceptions are caught, sequentially, by catch clauses in the current try block
D .exceptions always are caught by the outermost try block
E .none of the above
問題7:In order to define a keyboard input object, keyboard, you could use the instruction:
BufferedReader keyboard = new BufferedReader(System.in);
A .true
B .false
分析:一個BufferedReader對象必須用Reader對象構建。系統。in是一個輸入流對象。爲了使用上述定義,必須將BufferedReader構造函數中的對象更改成(新的InputStreamReader(System.in))。一份法律聲明。
點評過的同窗博客和代碼
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第五週 | 1350/4035 | 2/11 | 24/157 |