java基礎筆記(面向物件)
一、封裝
使用者直接對類內部的屬性進行操作會導致資料的錯誤、混亂或安全性問題。可以通過宣告為private ,再提供get/set 方法進行訪問。
二、過載
在一個類中允許同事存在一個以上同名函式,只要引數個數,引數型別 不同即可。
三、this 關鍵詞
是當前類的一個物件的引用。
四、類的繼承(extends)
子類繼承了父類,就繼承了父類中非私有的屬性和方法。子類中可以使用父類的屬性和方法,也可以建立新的資料和方法。
java 只支援單繼承,不允許多繼承。
– 一個子類只能有一個父類。
– 一個父類可以派生出多個子類。
– 子類不能繼承伺服器的構造方法。
五、訪問控制
六、重寫
子類可以根據需要對從父類繼承來的方法進行改造(方法的重置/重寫),在程式執行時,子類的方法將覆蓋父類的方法。
覆蓋的方法必須和被覆蓋方法具有相同的方法名、引數列表和返回值。
覆蓋方法不能使用比被覆蓋方法更嚴格的訪問許可權。
七、super 關鍵字
是在子類中對父類的引用。
子類的構造器必須呼叫父類的一個構造器。不顯示呼叫,則預設呼叫父類無參的構造器。
super 和 this 不能同時在一個建構函式中出現。
super 和 this 只能作為建構函式的第一行出現。
八、多型
同樣型別的變數,呼叫同樣的方法,卻產生完全不同的行為。
父類指向子類的引用(父類 = new 子類)。父類呼叫方法,呼叫的將是子類重寫的方法。
例子:
Person p1 = new Man();
p1.walk(); // 呼叫的是子類重寫的方法。
父類多型的情況下(父類指向子類的引用(父類 = new 子類)),父類不能呼叫父類沒有的方法。可以通過強制型別轉換的方式解決此問題。
例子:
Person p1 = new Man();
Man man = (Man) p1;
父類的物件可以轉換為任何子類的型別,但有可能會發生 型別轉換異常。
只能在有父子類關係的情況下才能強制型別轉換。
九、instanceof 操作符
X instanceof A :檢驗X 是否為類A 的物件,返回值為boolean 型。
要求X 所屬的類與類A 必須是父子類關係。否則編譯錯誤。
十、static 關鍵字
static{} 靜態程式碼塊在類載入時執行,並且只執行一次。
十一、單子(singleton)設計模式
採取一定的方法保證在整個軟體系統中,對某個類智慧存在一個物件例項。並且該類只提供了一個取得其物件例項的方法。
構造器私有化。
在該類內部提供一個私有的靜態例項物件。
提供一個get 方法 供外部使用。
例子:
private JavaTest() {}
private static JavaTest javaTest = new JavaTest();
public static JavaTest getJavaTest() {
return javaTest;
}
十二、final 關鍵字
final 可以修飾類,屬性和方法。表示最終的。
final 修飾的屬性,是最終的屬性 - 屬性值不能被修改,即常量。
屬性必須在初始化,或在非靜態程式碼塊,或在構造器中進行初始化。
final 修飾的方法,是最終的方法 - 該方法不能被修改 - 該方法不能被重寫。
final 修飾的類,是最終的類 - 該類不能被擴充套件 - 該類不能被繼承。
十三、抽象類(abstract)
用於修飾方法 和 類。
abstract 修飾的方法: 沒有方法體,只有方法宣告。
abstract 修飾的類 : 抽象類,不能被例項化。抽象類是用來被繼承的,抽象類的子類必須重寫父類的抽象方法,並提供方法體。
有抽象方法的類一定是抽象類,但抽象類中可以沒有抽象方法。
不能用abstract 修飾私有方法,構造方法,靜態方法。
十四、介面(interface)
介面是抽象方法和常量的定義集合。
介面是一種特殊的抽象類,介面中只能包含常量和方法的定義,而沒有變數和方法的實現。
介面中所有的成員變數預設由public static final 修飾。
介面中所有的方法都預設由public abstract 修飾。介面中沒有構造方法。
實現介面的類必須提供介面中所有方法的具體實現。
介面允許多實現。一個類可以實現多個介面。
介面與實現類之間存在多型性。
介面可以繼承另一個介面。
十五、內部類
在類的內部定義的一個類。相當於一個類的內部成員。
在類的外部可以訪問該類的內部類。
靜態內部類中的方法不能訪問外部類的非靜態物件。
十六、異常
java 中,將程式執行中發生的不正常情況稱為“異常”。
java 中的異常用於處理非預期的情況,如檔案沒找到,網路錯誤,非法引數等。
java 程式執行過程中所發生的異常事件可分為兩類:
Error : JVM 系統內部錯誤、資源耗盡等嚴重情況。
Exception : 其他因程式設計錯誤或偶然的外在因素導致的一般問題。如空指標訪問,試圖讀取不存在的檔案,網路連線中斷。
自定義異常:
public class JavaTest extends RuntimeException {
public JavaTest() {
}
public JavaTest(String msg) {
super(msg);
}
}