問題1:如何理解書中html
對象的類型,而不是引用的類型,決定調用的是方法的那個版本java
解決思路:當一個父類對象的引用變量,它引用子類對象時,決定調用誰的成員方法的條件是:被引用對象的類型而不是引用變量的類型。可是這個被調用的方法必須是在父類中定義過,也就是子類覆蓋過的方法。git
問題2:關於動態綁定
1.關於綁定數組
綁定指的是一個方法的調用與方法所在的類(方法主體)關聯起來。對java來講,綁定分爲靜態綁定和動態綁定;或者叫作前期綁定和後期綁定.網絡
2.靜態(前期)和動態(後期)綁定數據結構
靜態:在程序執行前方法已經被綁定,java當中的方法只有final,static,private和構造方法是前期綁定。(我的認爲將方法聲明爲final既是爲了方法被覆蓋也是爲了關閉動態綁定,static,private因爲不能被繼承因此在編譯時就能夠肯定值)
動態:在運行時根據具體對象的類型進行綁定。單元測試
3.動態綁定的細節(來自網絡)學習
- 編譯器檢查對象的聲明類型和方法名。假設咱們調用x.f(args)方法,而且x已經被聲明爲C類的對象,那麼編譯器會列舉出C類中全部的名稱爲f的方法和從C類的超類繼承過來的f方法
- 接下來編譯器檢查方法調用中提供的參數類型。若是在全部名稱爲f 的方法中有一個參數類型和調用提供的參數類型最爲匹配,那麼就調用這個方法,這個過程叫作「重載解析」
- 當程序運行而且使用動態綁定調用方法時,虛擬機必須調用同x所指向的對象的實際類型相匹配的方法版本。假設實際類型爲D(C的子類),若是D類定義了f(String)那麼該方法被調用,不然就在D的超類中搜尋方法f(String),依次類推
4.個人例子測試
public class Testme { public static void main(String[] args){ Father people = new Son(); people.high(); }} class Father{ public void high(){ System.out.println("170");}} class Son extends Father{ public void high(){ System.out.println("120");}}
聲明瞭Father類型變量people但它指向是一個Son的對象,其調用Son的方法,由於在運行時發生了動態綁定,在綁定過程當中須要肯定調用哪一個版本的high方法實現。.net
描述:書中介紹繼承的概念出適用於類外,還適用於接口,那麼接口繼承是否和類繼承通常不支持多繼承。
(來自網絡)java接口能夠多繼承。
Interface Extends Interface0, Interface1, interface3
不容許類多重繼承的主要緣由是,若是A同時繼承B和C,而B和C同時有一個D方法,A如何決定該繼承那一個呢?
但接口不存在這樣的問題,接口全都是抽象方法繼承誰都無所謂,因此接口能夠繼承多個接口。
public class Mydoc { Document d; public static void main(String[] args) { d = new Document(new IntFactory()); d.DisplayData(); d = new Document(new FloatFactory()); d.DisplayData(); } }
此時程序提示Non-static filed 'd' cannot be referenced from a static context
static Document d
Int x=100; Int y=100; Integer wx=x; Integer wy=y; System.out.println(x==y); System.out.println(wx==wy);
在JDK5以上的環境編譯與執行,則顯示的結果是[true,true]
1.分析:不瞭解Integer類
Integer 類在對象中包裝了一個基本類型 int 的值。Integer 類型的對象包含一個 int 類型的字段。
此外,該類提供了多個方法,能在 int 類型和 String 類型之間互相轉換,還提供了處理 int 類型時很是有用的其餘一些常量和方法。
int[] arr1 = {1, 2, 3}; int[] arr2 = new int[arr1.length]; arr2 = arr1; for(int value : arr2) { System.out.printf("%d", value); }
如下描述何者正確? [執行時顯示:123]
int value while(arr2.hasNext()){ myBook = bookList.next(); System.out.println(value);}
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第五週 | 200/1500 | 2/6 | 20/20 | |
第六週 | 200/1700 | 1/7 | 18/38 | |
第七週 | 500/2100 | 2/9 | 20/58 | |
第八週 | 000/0000 | 0/0 | 00/00 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:XX小時
實際學習時間:XX小時
改進狀況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)