一、繼承
繼承是從已有類派生一個新類的過程
繼承的目的之一是複用已有的軟件
繼承在父類與子類之間創建了is-a的關係
類的繼承格式
class 父類{};
class 子類 extends 父類{};
interface 父類{};
class 子類 implements 父類{};
super和this
super:能夠經過super來實現對父類的訪問,用來引用當前對象的父類
this:指向本身的引用html
二、抽象類的子類將對從父類繼承的抽象方法提供具體定義——方法重寫特殊狀況
可見性
私有成員也被子類繼承,但不能經過名字直接引用。不過能夠間接引用他們。
設計繼承
每次派生操做都應是一個is-a關係。子類應該是更具體的父類對象
設計類層次是爲了複用,或是未來能夠複用
在問題域中標出類和對象時,找出他們的共性。共性處於越高層次,越能保持一致性,進行維護。
適當地重寫方法來知足子類性能
按需給子類添加新的變量,但不要隱藏繼承的任何變量
容許每一個類管理它本身的數據。因此使用super引用來調用構造方法,能夠用它調用被重寫的方法
設計類層次來知足應用需求,須要注意未來如何使用
即便目前並不使用,也要適當地在子類重寫toString和equals這類的通常方法,以便未來派生的類不會出現問題
使用抽象類來爲類層次中的具體類指定一個公共類接口
謹慎使用可見性修飾符,在派生類中提供不違背封裝原則訪問便可。java
解答:
一、靜態變量有兩種狀況:
靜態變量是基本數據類型,這種狀況下在類的外部沒必要建立該類的實例就能夠直接使用
靜態變量是一個引用。這種狀況比較特殊,主要問題是因爲靜態變量是一個對象的引用,那麼必須初始化這個對象以後才能將引用指向它。
所以若是要把一個引用定義成static的,就必須在定義的時候就對其對象進行初始化。
二、靜態方法:與類變量不一樣,方法(靜態方法與實例方法)在內存中只有一份,無 論該類有多少個實例,都共用一個方法。
靜態方法與實例方法的不一樣主要有:
靜態方法能夠直接使用,而實例方法必須在類實例化以後經過對象來調用。git
問題2解決方案:
迭代器(Iterator)
迭代器是一種設計模式,它是一個對象,它能夠遍歷並選擇序列中的對象,而開發人員不須要了解該序列的底層結構。迭代器一般被稱爲「輕量級」對象,由於建立它的代價小。Java中的Iterator功能比較簡單,而且只能單向移動:使用方法iterator()要求容器返回一個Iterator。第一次調用Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。使用next()得到序列中的下一個元素。使用hasNext()檢查序列中是否還有元素。使用remove()將迭代器新返回的元素刪除。程序員
問題一解決方法:換位思考,編了個test程序驗證。算法
問題二解決方法::密鑰使用的背景是開放式環境,也就是說,若算法公開,解密的關鍵就在於雙方使用相同或對稱的密鑰。簡單來講,密鑰是一種參數(它是在明文轉換爲密文或將密文轉換爲明文的算法中輸入的數據)
加密算法是明文轉換成密文的變換函數,是算法。設計模式
問題三解決辦法:使用String.valueOf('字符')的方法,就能將字符型以字符串形式返回。數據結構
錯題1:Inheritance through an extended (derived) class supports which of the following concepts?(繼承經過擴展(派生)類來支持下列概念中的哪個?)
A.interfaces
B.modulary
C.information hiding
D.code reuse(代碼複用)
E.correctness
錯誤解析:經過擴展一個類並繼承它,新類不須要從新實現任何繼承的方法或實例數據,從而節省了程序員的工做量。所以,代碼重用是重用他人代碼的能力,經過擴展它來知足您的需求。經過繼承父類能夠大大的縮減代碼的重複,對於本身選擇接口類的問題,表示本身當時很迷,不知道怎麼回事就選擇了接口。ide
錯題2:Which of the following is true regarding Java classes?(對於Java類,下面哪一個選項是正確的?)
A.All classes must have 1 parent but may have any number of children (derived or extended) classes(全部的類都必須有一個父類,可是可能有任意數量的子類(派生的或擴展的)類。)
B.All classes must have 1 child (derived or extended) class but may have any number of parent classes
C.All classes must have 1 parent class and may have a single child (derived or extended) class
D.All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes
E.All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
錯誤解析:Java支持繼承,但不支持多重繼承,所以Java類能夠有任意數量的子元素,但只有一個父類。此外,因爲全部Java類都直接或間接地從對象類繼承,全部Java類都只有一個父類。在作此題的時候,考慮了終極父類--Object類,由於它沒有父類,因此選擇則了E選項,可是,老師說能夠把Object類看做本身是本身的父類的問題,我也表示很無奈。心疼這一分......函數
錯題3:A variable declared to be of one class can later reference an extended class of that class. This variable is known as(聲明爲一個類的變量稍後能夠引用該類的擴展類。這個變量被稱爲。)
A.protected
B.derivable
C.cloneable
D.polymorphic(多態)
E.none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class
錯誤解析:術語多態意味着變量能夠有多種形式。在通常狀況下,Java被強烈定義爲,一個變量,一旦被聲明爲一個類型,就永遠不會改變爲另外一種類型。例外的是,多態變量能夠是任何類型的派生類(儘管不是同時,變量能夠從一種類型轉換爲另外一種類型)。多態的問題,在看過第十章以後,明白了此題的答案,經過聲明爲父類的對象,就能夠引用繼承父類的子類的方法,這種靈活的操做就是經過繼承實現的多態。性能
錯誤解析:多態變量能夠包含許多不一樣的類型,可是在程序執行以前,它不知道是哪種類型。在引用變量時,必須作出決策。這個決策是由運行時環境根據變量的最新分配而作出的。這道題也是有關多態的問題,因此看過第十章以後,是動態綁定的問題,效率較早期綁定低,可是動態綁定,體現了多態的靈活性。
錯題5:Using the reserved word, super, one can(使用保留字super,能夠)
A.access a parent class'constructor(s)
B.access a parent class'methods and instance data
C.access a child class'constructor(s)
D.access a child class'methods and instance data
E.none of the above
錯誤解析:保留字super提供了一種機制,用於訪問父類的方法和實例數據(無論它們是否隱藏)。此外,可使用super來訪問父類的構造函數。正確答案是A和B的組合選項。
錯題6:If you instantiate an Abstract class, the class or object you wind up with(若是您實例化一個抽象類、類或對象會獲得)
A.is also an Abstract class
B.is a normal class
C.is an Interface
D.is a reference to an Object
E.can't exist you cannot instantiate an Abstract class(不能存在不能實例化一個抽象類)
錯誤解析:您只能實例化具體的類而不是抽象類。可是您能夠擴展抽象類和接口。
抽象類實際上是能夠實例化的,可是他的實例化方式不是經過new方式來建立對象,而是經過父類的引用來指向子類的實例來間接地實現父類的實例化(由於子類要實例化前,必定會先實例化他的父類。這樣建立了繼承抽象類的子類的對象,也就把其父類(抽象類)給實例化了).可是:接口是不能被實例化的(接口壓根就沒有構造函數)。
錯題7:A derived class has access to all of the methods of the parent class, but only the protected or public instance data of the parent class.(派生類能夠訪問父類的全部方法,但只訪問父類的受保護或公共實例數據。)
A.true
B.false
錯誤解析:因爲方法也能夠聲明爲私有的,所以派生類沒法訪問任何私有方法。所以,派生類只能訪問父類的受保護和公共方法和實例數據。沒有看到訪問全部方法,因此經過後半句就直接認爲對了。
錯題8:If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but can not redefine x to be a different type.(若是類AParentClass有一個受保護的實例數據x,而AChildClass是一個派生類的AParentClass,那麼AChildClass能夠訪問x,但不能從新定義x爲另外一種類型。)
A.true
B.false
錯題9
Aside from permitting inheritance, the visibility modifier protected is also used to
A. permit access to the protected item by any class defined in the same package
B. permit access to the protected item by any static class
C. permit access to the protected item by any parent class
D. ensure that the class cannot throw a NullPointerException
E. define abstract elements of an interface
正確答案: A 個人答案: B
解析:受保護的可見性修飾符用於以受保護的方式控制對項目的訪問。保護是訪問限於當前類(如私人項目),同一包中的類或此類的擴展類。
教材學習中的問題和解決過程, 一個問題加1分
代碼調試中的問題和解決過程, 一個問題加1分
基於評分標準,我給本博客打分:11分。得分狀況以下:正確使用Markdown語法+1.教材學習中的問題和解決過程+2.代碼調試中的問題和解決過程+2.感想,體會不假大空+1.錯題學習深刻+1.點評認真,能指出博客和代碼中的問題+1.結對學習狀況真實可信+1.課後題有驗證+1,進度條有記錄+1.
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 200/200 | 2/2 | 20/20 | |
第二週 | 350/500 | 2/4 | 24/38 | |
第三週 | 512/1000 | 3/7 | 22/60 | |
第四周 | 1158/1300 | 4/9 | 35/90 | |
第五週 | 2905/3000 | 4/5 | 24/24 |