Java學習筆記2------對象與類

學習《Java核心數據》(原書第十版)的筆記------第四章

1、類是構造對象的模板或藍圖

2、封裝(encapsulation)亦稱數據隱藏,是面向對象的重要概念

3、對象中數據叫做實例域,操縱數據的過程稱爲方法

4、實現封裝的關鍵在於絕對不能讓其他類訪問本類的實例域

5、類和類之間最常見的關係有:聚合(has-a),依賴(using-a),繼承(is-a)

6、使用構造器獲得類的新的實例;需要使用new關鍵字來調用構造器;構造器的名字應該與類名相同;

7、如果沒有寫構造器,則系統將自動爲類生成一個構造器,將所有的值設置爲默認值,基本數據類型設置爲0,boolean設置爲false,對象設置爲null

8、如果提供了帶參數的構造器,那麼將不能默認使用不帶參數的構造器進行構造,否則將會報錯

9、對象與對象變量的區別:對象是存儲在內存中的一個實際存在的內存區域,對象變量實際上只是對象的引用

10、如果在定義對象變量是不知道要引用什麼對象,那麼應該初始化爲null

11、java中=符號對對象變量進行賦值時將進行引用賦值,需要真的進行拷貝,需要使用clone()函數

12、java類庫的Date類並不是一個安全的函數,它允許使用函數修改關鍵的數值------距離現在的秒數。java官方不推薦使用。應當使用LocalDate對象

13、更改器方法和訪問器方法:更改器方法將更改本對象的實例域、狀態;但是訪問器方法不會改變本對象的狀態,即使它可能返回一個經過克隆並修改之後的相同對象

14、構造器必須與類同名,每個類都可以有一個以上的構造器,構造器可以有0、1或者多個,構造器沒有返回值;構造器總是伴隨着new關鍵字一起使用

15、不要在構造器中使用和實例域同名的局部變量,這樣會將實例域覆蓋;如果一定要這樣使用,可以在後面使用this關鍵字調用本對象的實例域;另一種方法時在構造器中傳入參數中,在參數名之前加a,如aName,aAge

16、隱式參數和顯式參數:每一個類的方法都有一個隱式參數,this,即對象本身,在方法中使用this能夠使得其他變量與作用域分開,更加清晰;顯式參數即傳入的參數

17、在java中,所有類的方法必須全部定義在類中

18、使用訪問器和更改器方法能夠實現數據的封裝,確保數據不被外部修改

19、爲了進行封裝,需要有如下三項內容:

        一個私有的數據域

        一個共有的域訪問器方法

        一個共有的域更改器

        這樣,可以更改類的內部實現,而不影響外部,方便進行錯誤檢查。

20、方法可以調用本類對象的私有數據。並不侷限於本對象

21、final實例域:定義常量

         但是,final關鍵字只決定了修飾的對象變量不能再引用其他對象,但是不能保證其引用的對象不被修改。

22、靜態域static:靜態域屬於一個類,一個類創建時生成,爲每個對象共有

23、靜態常量:一般用作常量,如public static final double PI,並且一般爲public,因爲不用擔心被修改

24、靜態方法static

        使用類名能夠直接訪問的方法,靜態方法不對類進行操作,沒有隱式參數this。

        static方法能夠通過類名直接調用,雖然可以通過對象名調用,但是使用類名調用更加清晰。

25、顯然不能通過類名調用普通方法,因爲沒有隱式參數可以傳遞。

26、但是靜態方法可以訪問本類的靜態域。

27、工廠方法

        當要使用一個對象/類生成另外一個對象時,不能直接調用本類的構造函數,因爲本類構造函數不能返回要求的類的對象。

這時,使用靜態的方法充當工廠方法,返回需要的對象

28、java是按值調用還是按引用調用

        答:按值調用。對於基本數據類型的參數,直接進行數值調用,這毫無疑問。對於對象類型的參數,傳入的是對象的引用,在方法中獲得的是對對象的引用的拷貝,所以可以修改對象,但是不能修改傳入的形參的指向。

29、重載

        java允許重載任何函數,不侷限於構造函數,重載時需要方法的簽名不同。方法的簽名指“方法名 + 參數”,主要簽名不同,就可以重載。但是返回值並不是簽名的一部分,所以不能重載方法名和參數相同,但是返回類型不同的方法

30、默認域初始化

31、無參構造器

32、顯式域的初始化:直接對實例域用等號進行初始化;會在執行構造器之前,進行顯式域的初始化

33、初始化塊:在類中用{}包含的語句塊,用於初始化,在構造器之前執行。

34、使用構造器調用其他構造器,可以避免構造器修改時對其他代碼產生影響

35、靜態域初始化塊:static{}包含的語句塊,對靜態域進行初始化,僅在類初始化時執行一次

36、對象析構與finalize方法

        在對象中重寫finalize方法,能夠使得在對象在被垃圾回收器回收之前執行所需操作,一般是釋放系統資源。

        更好的方法是使用close方法,使用完成後手動釋放資源。因爲垃圾回收並不·確定在何時執行。

37、包

 

 

 

發佈了86 篇原創文章 · 獲贊 59 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章