【Java筆記】面向對象之類與對象

1、構造方法及其重載
2、static關鍵字
3、靜態變量與成員變量
4、靜態方法與成員方法
注意:在同一個java原文件中,可以有多個class類,但是隻有有一個公共的 public class

1、構造方法

這裏寫圖片描述


因爲後續複習子類如何調用構造函數的時候涉及到了無參構造函數的問題,所以在這裏我梳理了無參構造函數的知識。
關於無參構造函數的說明:當我們創建一個類的時候,如果我們沒有創建一個構造方法(哪怕是無參數的)。JVM會幫助我們創建一個默認的構造方法,也稱爲無參構造方法。但是如果我們創建一個構造方法時,JVM就不會再爲我們生成一個默認的構造方法。子類構造函數中沒有顯示定義的時候,子類會默認的調用父類的無參構造方法。
子類繼承父類中,子類會在構造函數中調用父類的構造函數,總結爲以下幾種情況:
1. 如果沒有顯式定義,系統會自動添加super()來調用父類構造函數。
- super()調用的是父類的無參構造函數。
(父類中只有默認構造函數即無參構造函數或顯示定 義了無參構造函數)
- 如果父類 沒有無參構造函數,則編譯器報錯。
2. 如果已經顯式定義 ,則會根據定義的super(* ,* ,* , … )來調用對應的父類的構造函數.


**函數重載:函數名稱一樣,但參數列表內容不一樣(參數個數或者參數類型)
函數重載的好處:使得類似的功能的多個函數能夠使同一個函數名,這樣方便程序員的記憶。**

2、靜態成員

1、用static修飾的變量就是靜態變量,也被稱爲類變量。
2、其特點是被所有對象共享,可以通過“對象名.靜態變量名”
或者“類名.靜態變量名”兩種方式訪問,且以第二種訪問的
方式居多。
這裏寫圖片描述

疑難雜題:爲什麼實例對象可以訪問類的靜態成員,靜態成員不可以訪問實例對象

全類共享靜態成員,實例對象可以訪問類的靜態成員,靜態成員不可以訪問實例對象。按初始化的先後順序來考慮即可明白。
類的靜態成員不需要有實例對象,在類加載的時候,就可被初始化了。
類的靜態成員的初始化,是比類的實例對象要提前完成的,所以實例對象可以訪問類的靜態成員。

總結:

聲明的完整格式:
這裏寫圖片描述這裏寫圖片描述

abstract;抽象類抽象方法,必須被繼承才能使用. public abstract double area();

static:靜態成員,所有對象共享。非靜態變量不能夠被靜態方法引用。不能用private、static、synchronized、native訪問修飾符修飾。原因如下:抽象方法沒有方法體,是用來被繼承的,所以不能用private修飾;static修飾的方法可以通過類名來訪問該方法(即該方法的方法體),抽象方法用static修飾沒有意義;使用synchronized關鍵字是爲該方法加一個鎖。。而如果該關鍵字修飾的方法是static方法。則使用的鎖就是class變量的鎖。如果是修飾類方法。則用this變量鎖。但是抽象類不能實例化對象,因爲該方法不是在該抽象類中實現的。是在其子類實現的。所以。鎖應該歸其子類所有。所以。抽象方法也就不能用synchronized關鍵字修飾了;native,這個東西本身就和abstract衝突,他們都是方法的聲明,只是一個吧方法實現移交給子類,另一個是移交給本地操作系統。如果同時出現,就相當於即把實現移交給子類,又把實現移交給本地操作系統,那到底誰來實現具體方法呢?

final:最終類最終方法,不能被繼承。final修飾的變量不可變;final修飾的對象其屬性可以改變,但是final型的引用是不能被修改的~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章