【Java菜鳥學習總結】Java基礎知識(類)
阿新 • • 發佈:2018-08-20
個數 修飾符 trac 空間 釋放 set 大小 成員方法 的區別
目錄
- 【Java菜鳥學習總結】Java基礎知識(類)
- 1、面向對象編程
- 2、類
- 3、static關鍵字
- 4、final關鍵字
【Java菜鳥學習總結】Java基礎知識(類)
1、面向對象編程
1.1、面向對象編程的特征
面向對象編程(OOP)的三大特征 {
封裝;
繼承;
多態;
}
1.2、類與對象概述
類與對象是面向對象的核心概念。
類與對象 {
類; // 類是對於一類事物的描述,是抽象的、概念的定義。
對象; // 對象是實際存在的該類事物的每個個體,因而也別稱為實例。
}
2、類
2.1、類的語法
修飾符 class 類名 {
屬性聲明; // 屬性,對應類中的成員變量
方法聲明; // 行為,對應類中的成員方法
}
2.2、類的關系
類的關系 {
關聯關系;
繼承關系;
聚集;
組合;
}
2.3、屬性
2.3.1、屬性的語法
修飾符 類型 屬性名 = 初值
2.3.2、Java變量
- Java變量的概念
變量 { 成員變量 { 實例變量; // 不以static修飾 類變量; // 以static修飾 } 局部變量 { 形參; // 方法簽名中定義的變量 方法局部變量; // 在方法中定義 代碼塊局部變量; // 在代碼塊中定義 } }
- 成員變量和局部變量的區別
成員變量和局部變量的區別 { 成員變量 { // 成員變量定義在類中,在整個類中都可以被訪問。 // 成員變量分為類成員變量和實例成員變量,實例變量存在於對象所在的堆內存中。 // 成員變量有默認初始化值。 // 成員變量的權限修飾符可以根據需要,選擇任意一個。 } 局部變量 { // 局部變量只定義在局部範圍內,如方法內、代碼塊內等。 // 局部變量存在於棧內存中。 // 作用的範圍結束,變量空間會自動釋放。 // 局部變量沒有默認初始化值,每次必須顯示初始化。 // 局部變量聲明時不指定權限修飾符。 } }
2.4、方法
2.4.1、方法的語法
修飾符 返回值類型 方法名 (參數列表) {
方法體語句;
}
// 註意:Java裏方法不能獨立存在,所有的方法都必須定義在類裏。
2.4.2、方法的參數傳遞
方法的參數傳遞方式 {
值傳遞; // 即將實際參數值的副本(復制品)傳入方法內,而參數本身不受影響
}
2.4.3、方法的重載
重載 {
方法名相同;
參數列表(參數個數、參數類型)不同;
與返回值類型無關;
}
2.5、構造器
2.5.1、構造器的語法
修飾符 類名 (參數列表) {
初始化語句;
}
// 構造器的作用:創建對象,給對象進行初始化
2.5.2、構造器的特征
構造器的特征 {
// 具有與類相同的名稱
// 不聲明返回值類型
// 不能被static、final、synchronized、abstract、native修飾,不能有return語句返回值
}
2.5.3、構造器的分類
構造器分類 {
隱式無參構造器; // 系統默認提供
顯示定義一個或多個構造器; // 無參、有參
}
2.5.4、構造器註意事項
構造器註意事項 {
// Java語言中,每個類都至少有一個構造器
// 默認構造器的修飾符與所屬類的修飾符一致
// 一個類可以創建多個重載的構造器
// 父類的構造器不可被子類繼承
}
2.6、this
this {
this.a = 10; // 方法內部使用,即這個方法所屬對象的引用
this.sayHello("hello"); // 方法內部使用,即這個方法所屬對象的引用
this(); /* 構造器內部使用,表示該構造器正在舒適化的對象。
使用this()必須放在構造器的首行。
使用this調用本類中其他的構造器,保證至少又一個構造器是不用this的。
*/
}
// 說明:this表示當前對象,可以調用類的屬性、方法和構造器
2.7、封裝
Java中通過將數據聲明為私有的(private),再提供公共的(public)方法:getXxx()和setXxx()實現對該屬性的操作。
2.7.1、權限修飾符
- Java權限修飾符public、protected、private置於類的成員定義前,用來限定對象對該類成員的訪問權限
權限修飾符 {
private; // 內部類√ 同一個包× 子類× 任何地方×
缺省; // 內部類√ 同一個包√ 子類× 任何地方×
protected; // 內部類√ 同一個包√ 子類√ 任何地方×
public; // 內部類√ 同一個包√ 子類√ 任何地方√
}
- 修飾符修飾範圍大小對比
public > protected > 缺省 > private
2.7.2、JavaBean
JavaBean {
// 類是公共的
// 有一個無參的公共的構造器
// 有屬性,且有對應的get、set方法
}
/* 說明:
用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。
*/
2.8、繼承
2.8.1、繼承的語法
class 子類類名 extends 父類類名 {
}
2.8.2、繼承的種類
繼承的種類 {
單繼承; // Java只支持單繼承,不允許多重繼承
}
2.8.3、super
- super的使用
super {
super.a = 10; // 訪問父類中定義的屬性
super.sayHello("hello"); // 調用父類中定義的成員方法
super(); // 子類構造器中調用父類的構造器
}
- this和super的區別
this和super的區別 {
訪問屬性 {
this; // 訪問本類中的屬性,如果本類中沒有此屬性則從父類中繼續查找
super; // 訪問父類中的屬性
}
調用方法 {
this; // 訪問本類中的方法
super; // 直接訪問父類中的方法
}
調用構造器 {
this; // 調用本類構造器,必須放在構造器的首行
super; // 調用父類構造器,必須放在子類構造器的首行
}
特殊 {
this; // 表示當前對象
super; // 無此概念
}
}
2.8.4、重寫
- 重寫的定義
重寫/重置/覆蓋/override的定義 {
// 在子類中可以根據需要對父類中繼承來的方法進行改造。在程序執行時,子類的方法將覆蓋父類的方法。
}
- 重寫的要求
重寫的要求 {
// 重寫方法必須和被重寫方法具有相同的方法名稱、參數列表和返回值類型。
// 重寫方法不能使用比被重寫方法更為嚴格的訪問權限。
// 重寫和被重寫的方法必須同時為static,或同時為非static。
// 子類方法拋出的異常不能大於父類被重寫方法的異常。
}
2.9、多態
2.9.1、多態的體現
多態的體現 {
// 方法的重載和重寫
// 對象的多態性,可以直接應用在抽象類和接口上
}
3、static關鍵字
3.1、static使用範圍
static使用範圍 {
屬性;
方法;
代碼塊;
內部類;
}
3.2、被修飾後的成員具備的特點
被static修飾後的成員 {
// 隨著類的加載而加載
// 優先於對象存在
// 修飾的成員,被所有對象所共享
// 訪問權限允許是,可不創建對象,直接被類調用
}
// 註意:在static方法內部只能訪問類的static屬性,不能訪問類的非static屬性。
// 註意:在static方法內部不能有this和super。
// 註意:重載的方法需要同時為static或者非static。
3.3、非靜態代碼塊和靜態代碼塊
非靜態代碼塊和靜態代碼塊 {
// 沒有static修飾的代碼塊
靜態代碼塊 {
// 可以有輸出語句
// 可以對類的屬性、類的聲明進行初始化操作
// 可以調用靜態的變量和方法
// 若有多個非靜態的代碼塊,那麽按照從上到下的順序依次執行
// 每次創建對象的時候,都會執行一次。且先於構造器執行
}
// 用static修飾的代碼塊
靜態代碼塊 {
// 可以有輸出語句
// 可以對類的屬性、類的聲明進行初始化操作
// 不可以對非靜態屬性初始化。即:不可以調用非靜態的屬性和方法
// 若有多個靜態的代碼塊,那麽按照從上到下的順序依次執行
// 靜態代碼塊的執行要先於非靜態代碼塊
// 靜態代碼塊只執行一次
}
}
4、final關鍵字
4.1、final使用範圍
final使用範圍 {
類;
屬性;
方法;
}
4.2、final的特點
被final修飾後的特點 {
// final標記的類不能被繼承
// fianl標記的方法不能被子類重寫
// final標記的變量(成員變量或局部變量)即成為常量。名稱大寫,且只能被賦值一次
}
【Java菜鳥學習總結】Java基礎知識(類)