1. 程式人生 > >java基礎畢向東-day6-8

java基礎畢向東-day6-8

1.只有類才存在靜態的變數 方法只能對靜態變數的操作 不能在方法內試圖定義靜態變數否則的話會丟擲編譯錯誤。 
   靜態變數的本意是為了讓所有的物件共享這個變數,如果在方法裡面定義靜態變數的話就存在邏輯錯誤了,也達不到你想要目的. 因為在方法定義靜態變數根本沒有他的任何意義.

2.對於工具類,類中方法不會操作特有的成員函式,所以可以將工具類中的方法加上static,方便用類名直接呼叫,另外,為了避免別人建立工具類的物件,一般將工具類的建構函式私有化。

3.方法區裡面儲存了Person類的靜態成員變數和所有方法,當setName方法被呼叫時,setName方法進棧,且裡面有一個區域性變數name(String name的name)和隱含的一個this(可以這麼理解),該方法被哪個物件呼叫this就指向誰(p),然後完成賦值動作

 

4.(P83)餓漢式是類一被載入,堆記憶體中就有物件,s的值就確定了,而懶漢式類載入的時候s為null,等到判斷(呼叫getInstance方法的時候)的時候才建立物件(延遲載入)。

5.(P89)final : 最終。作為一個修飾符,

  • 可以修飾類,函式,變數。
  • 被final修飾的類不可以被繼承。為了避免被繼承,被子類複寫功能。
  • 被final修飾的方法不可以被複寫。
  • 被final修飾的變數是一個常量只能賦值一次,既可以修飾成員變數,有可以修飾區域性變數。當在描述事物時,一些資料的出現值是固定的,那麼這時為了增強閱讀性,都給這些值起個名字。方便於閱讀。而這個值不需要改變,所以加上final修飾。
  • 內部類定義在類中的區域性位置上是,只能訪問該區域性被final修飾的區域性變數

6. 模板設計模式

7. abstract和那些關鍵字不能共存?

  • final:首先abstract修飾的類,該類中的方法子類繼承之後需要重寫的,可是final修飾的類不能比繼承,也就沒子類,方法更不能得到重寫,相互衝突;不能共存
  • private:私有的意思,方法子類是不能被繼承到的,那麼方法就沒有被重寫,可是abstract是要求方法重寫的也相互衝突;不能共存
  • static:因為static修飾的方法是靜態方法,其可以直接被類所呼叫。而abstract修飾的方法為抽象方法,即無方法體的方法,不能夠被直接呼叫,需要在子類或實現類中去編寫完整的方法處理邏輯後才能使用。

8.可以多實現是因為介面內沒有定義方法體,下面子類中只需要實現一個show方法就可以了,不會出現多繼承的衝突情況。但是如果兩個介面中存在函式名相同但是返回值型別不同的函式時,不可以同時實現。

9.類與類是單繼承,類與介面是多實現,介面與介面之間是多繼承

10. 以下是錯誤示範,在多型進行判斷的時候 不要進行父類的判斷,因為只要傳進來的都是Animal型別,一旦判斷成功後下面的判斷就不再繼續了。

 

 

 

11. (P105)這裡面,在進行兩個物件的比較的時候(equals方法比較的是地址值,a.equals(b)和a==b,結果相同),equals方法裡面既可以接受Demo物件也可以接收Person物件,這也是多型的一個應用(  boolean equals(Object obj)  )

 

12. equals為Object類中定義的方法,其他類可以複寫,複寫時引數型別也需要是Object型別,此時在進行其他判斷時要注意 需要向下轉型。 總結,在進行復寫的時候需要進行型別判斷和轉換的動作。

13.Object類中的 toString 方法返回的是 該物件所屬的類@該物件的雜湊值的十六進位制表現形式