目錄
三、private\default\protected\public
一、抽象類和接口
抽象類:一個類暫時由方法未實現,需要被定義未抽象類。
類的繼承:一個類僅僅只能繼承一個類,抽象類也可以被其他類唯一繼承。繼承抽象類的類必須實現抽象類所有抽象的方法,如果未完成實現,則此繼承類也是抽象類。只有實現抽象類(父類裏)的所有抽象類,才能變成完整類。
接口:類的所有方法都沒有實現,這個類就可以稱爲接口interface。接口不是類,或者可以叫一個特殊的類,因爲一個類可以實現多個接口。類實現接口,也必須實現所有未實現的方法,如果沒有完全實現,那麼類也只能成爲一個抽象類。接口裏面可以定義變量,但是一般是常量。常量的定義方法一般爲 final static .....
接口和抽象類的相同點:兩者都不可以被new(實例化)操作
接口和抽象類的不同點:
抽象類:abstract關鍵字,抽象類中可以有已經實現的方法存在,一個類只能繼承一個抽象類,抽象類有構造函數,抽象類可以有main函數,可以運行;抽象類中的方法可以是private/protected的。
接口:interface關鍵字,接口內只存在未實現的方法,一個類可以實現多個接口,接口本身可以繼承其他的多個接口,接口中沒有main函數,接口中方法只能是public。
注意:在jdk8之後,接口內也可以定義默認方法/靜態方法,並且實現
jdk8以後jdk12以前,存在對比。
二、static、final,單例模式,常量
2.1static
static變量:相當於共有變量,通過格式:類名.變量訪問,同一個類實例化出的對象的靜態變量的值都在共享存儲的共同的一個空間。
static方法:靜態方法可以通過類名.方法直接引用,在靜態方法中只能由靜態變量,不能有非靜態變量,靜態方法嚴禁引用非靜態方法。非靜態方法可以引入靜態變量。
static塊:指的是static關鍵字{}住的區域代碼,只在類的第一次被加載時調用,也就是說程序運行期間,這段代碼只會運行一遍。執行順序static塊>匿名塊>構造函數
static類:只有靜態方法和屬性,並且用static修飾。
static嵌套類:在其他類內部,只可以訪問外圍類的靜態成員,但是自己可以定義非靜態成員。
2.2單例模式:
保證一個類有且只有一個對象,用static來共享實例對象,採用private構造函數,阻止外界new操作。
舉例:
2.3final
final類:不能被繼承
final方法:子類不可以更改
final變量:基本類型不能再次賦值,對象類型不能修改指針。
2.4常量
定義一般用 public static final來定義,爲了方便訪問public,不能修改final,不會修改/只讀/只有一份static
一般常量爲大寫。個人以爲用到常量的地方用文件存儲方式也可。
舉例:public static final String STR="hello";
三、private\default\protected\public
參考:中國大學mooc《JAVA核心技術》