在上一篇中說到了Java的四大特性,裡面出現了很多名次,包括以後學習Java中也會出現很多常用到的名次,對初學者來說可能不知道是什麼意思,或者是對這些刺耳的理解不是特別透徹,這裡我就我自己的理解來解釋下這些詞的意思。
包
在Java中常說某個包下面的某個類。那麼什麼是包呢?在平時操作電腦時,我們常江某個文件,視訊,音訊等問價放在某個資料夾下,而這個資料夾在Java中就就叫做包。其實飽和資料夾在某種意義上來說是等同的,只是在Java中將其叫做包而不叫做資料夾。
類
放在包下面的一個個並且是以.java結尾的檔案就是類。前面有說道對想是Java程式的核心,而類描述了物件的屬性和物件的行為,類是物件模板【類是對物件的抽象,物件是對類的例項化】
類按型別分為普通類,抽象類,介面,巢狀類等。按層級分又分為父類和子類
普通類
【訪問修飾符】 class 類名 【implements/extends 類名】{ },其中有一種特殊的類object類,object類是所有類的父類,如果一個類沒有用extends明確指出繼承於某個類,那麼它預設繼承Object類。
抽象類
當一個類中沒有足夠的資訊描述一個具體的書屋時,這個類就是抽象類。
語法:【訪問修飾符】 abstract class 類名{ }
特點:
1、抽象類不能例項化
2、抽象類可以擁有構造方法
3、抽象類可以宣告例項變數,也可以宣告靜態變數,也可以存在普通方法和靜態方法,變數在抽象類中可以初始化
4、抽象類中還可以有抽象方法 語法:【訪問修飾符】 abstract 返回值型別 方法名 (【引數】);
5、抽象類抽象方法,有抽象類的子類來實現
6、如果一個類是抽象類,那麼這個類的不一定有抽象方法,但如果一個類有抽象方法,那麼這個類一定是抽象類
7、如果抽象類的子類沒有吧抽象類中的所有抽象方法實現,則子類也需要定義成抽象類,有子類的子類負責實現剩餘的抽象方法。
8、普通方法在子類中與普通類一樣,可以實現也可以不實現
介面
就是對外提供了一系列功能的生命(也可以說介面中定義的方法只有方法的生命,沒有方法體)
語法:【訪問修飾符】 interface 介面名 {
//常量和方法的宣告
}
1 public interface demo{ 2 int i=0; 3 public void add() ; 4 }
特點:
1、介面中宣告的方法沒有方法體,只有方法的宣告
2、介面中宣告的成員屬性都是靜態的而且都是不可變的,因為介面中的成員屬性預設都是public static final 來修飾的
3、介面沒有構造方法,也不能被例項化
4、介面可以實現多繼承,介面之間用逗號隔開
5、介面中的方法只能被public來修飾,就算沒有明確的神明訪問修飾符,預設也是public
通過implements來實現介面,語法:
【訪問修飾符】 class 類名 implements 介面1,介面2{ }
巢狀類
宣告在類的內部的類稱之為巢狀類
語法:【訪問修飾符】 class 類名{
【訪問修飾符】【static】 class 類名{
}
}
分類:內部類:非靜態巢狀類
靜態巢狀類:用static修飾的巢狀類
內部類:內部類作為外部類的一個成員存在,與外部類的成員變數,成員方法並列
區域性內部類:在方法體內宣告的類,可以訪問他所在方法中的final引數和final區域性變數
靜態巢狀類中可宣告static成員或非靜態成員變數,但只能訪問外部類中的靜態成員
方法
方法就是實現某個功能的程式碼塊
方法的定義語法:
1、無返回值無引數的方法 【訪問修飾符】 void 方法名(){ //方法的功能程式碼 }
說明:void就是表示該方法是無返回值得(也就是說呼叫完該方法不會返回一個結果)
2、無返回值有引數的方法 【訪問修飾符】 void 方法名(資料型別 引數名,…){//方法的功能程式碼}
說明:方法中的引數又稱為形參(形式意義的引數),呼叫該方法時傳遞的資料稱為實參(實際的資料),傳遞的引數要和方法中的引數型別匹配
3、有返回值無引數的方法 【訪問修飾符】 返回值型別 方法名稱(){ return 返回值; }
說明:1、返回值型別有放回值來決定
2、在由返回值得方法的最後一句程式碼,一定是 return 返回值;。
4、有返回值有引數的方法 【訪問修飾符】 返回值型別 方法名(引數列表){ return 返回值}
變數
定義:在Java中用來儲存資料的元素,而且該元素所存放的資料時可以變化的,所以稱為變數
注意:變數也是識別符號的一部分
語法:1、變身名變賦值 資料型別 變數名稱=變數值
2、先宣告後賦值 資料型別 變數名稱;變數名稱=變數值;
定義變數的四個步驟:
1、宣告資料型別其實就是為了根據資料型別開闢相應的記憶體空間
2、給變數命名,其實就會說為了能夠把變數名和資料型別所對應的記憶體空間進行關聯
3、給變數賦值,其實就是把資料存放到變數名所對應的記憶體空間
4、使用變數,其實就是把變數所對應的記憶體空間中的資料讀取出來
常量
定義:在程式中他的值是不可變的,這樣的冤死及時常量
語法:final 資料型別 常量名稱=常量值;
建議:常量名稱一般全部大寫
識別符號
識別符號就是類名,方法名,引數名,包名等元素命名時,所寫的字元序列就統稱為識別符號
識別符號的命名規則:
1、有字幕,數字,下劃線,和$組成
2、不能以數字開頭
3、嚴格區分大小寫
4、長度無限制
5、不能是Java的關鍵字和保留關鍵字
建議:見名知意
訪問修飾符
在定義類、屬性、方法時都需要指定訪問修飾符,以此來限定類、屬性、方法的可訪問範圍。Java中的訪問修飾符有以下幾個關鍵字:
public:公共。該類或非該類均可訪問
private:私有的。只有在類的主體中才可以訪問。只能修飾屬性和方法,不能修飾類
protected:受保護。該類及子類的成員均可以訪問,同一個包中的類也可以訪問。只能修飾屬性和方法,不能修飾類
預設:不使用修飾符。只有相同包中的類才可以訪問
位置 | private | 預設 | protected | public |
同一個類 | 是 | 是 | 是 | 是 |
同一個包內的類 | 否 | 是 | 是 | 是 |
不同保內的類 | 否 | 否 | 是 | 是 |
不同包內不同類 | 否 | 否 | 否 | 是 |
關鍵字
在Java中被賦予了一定特殊意義和用途的單詞
保留關鍵字也是關鍵字,只是目前沒有任何的特殊意義和用途,保留使用。
this關鍵字
使用範圍:this關鍵字只能使用在沒有被static關鍵字修飾的方法中
作用:this關鍵字就會說對當類某個物件的引用(簡單來說就是可以把this看做當前類的一個物件,哪個物件呼叫當前的方法,this關鍵字就指向該物件)
【當區域性變數和成員變數完全一致時,以區域性變數為主,即就近原則】
用法:
1、當方法中的引數名或變數名和成員變數完全一致時,可以通過this關鍵字來區分作用域
2、當this關鍵字以this(引數列表)的形式,出現在構造方法的第一句時,就表示當前構造方法呼叫了該類中其他的構造方法。
final關鍵字
1、final修飾的變數等同於常量,一旦賦值就無法更改(是指引用變數不能變,引用變數所指向的物件的內容還是可以改變的)
【final無論修飾全域性變數還是區域性變數,在定義時都必修要初始化才能使用】
2、final修飾方法中的引數稱為最終引數,在方法體中同樣也不能為最終引數重新賦值
3、final修飾類,該類不能被繼承
4、final修飾的方法,不能被重寫
staitic關鍵字
static可以修飾變數,方法,程式碼塊
static修飾變數,也稱為類變數,因為static關鍵字修飾的變數,方法,程式碼塊都屬於類,而不屬於某個物件
【例項變數:沒有被static修飾的成員屬性或方法都屬於某個物件,也叫做例項屬性或例項方法,物件存在了,才會有例項變數開闢空間】
static修飾的屬相、方法可以通過:類名.屬性名或l類名.方法(引數)的形式來呼叫
特點:
1、靜態方法中只能訪問靜態方法和靜態的成員變數
2、在非靜態方法中,既可以訪問非靜態的方法、屬性,也可以訪問靜態屬性和靜態方法
3、在靜態方法中不能使用this和supper關鍵字,因為this和supper表示對物件的引用,而static修飾的方法是屬於類,所以在語法上存在一定的衝突
靜態程式碼塊:靜態程式碼塊只能出現在類的內部,任何方法的外部
靜態程式碼塊語法:static{ }
靜態程式碼塊作用:就是給靜態的成員屬性進行初始化
靜態程式碼塊的優先順序比構造方法的優先順序高
方法中引數的傳遞
在Java中無論是基本資料型別還是引用資料型別,在進行引數的傳遞時,都是採用的值傳遞(也就是傳遞的都是具體的資料)
基本資料型別在進行引數傳遞時,傳遞的值是副本,也就是說當把當前資料複製一份,然後再進行穿絲,所以目標方法中,對引數進行修改,這個值得本身是沒有任何變化的
引用資料型別字進行引數的傳遞時,傳遞的是資料所在的記憶體地址,所以在目標方法中,對引數進行修改,這個值本身也會發生相應的變化
向上轉型和向下轉型
向上轉型:把一個子類的物件,賦值給父類,就會把該物件當做父類物件來用
動態(延遲)繫結機制:在程式執行期間,會根據物件的真正的建立者來決定呼叫那個方法
發生動態繫結機制的條件:1、繼承 2、重寫 3、向上轉型 4、用向上轉型的物件呼叫被子類重寫的方法
向下轉型:把一個父類物件,複製給某個子類,需要加上強制轉換符
向下轉型一定是在向上轉型的基礎上型別的還原
向下轉型呼叫子類中的沒有重寫的方法
可以通過instanceof關鍵字來判斷某個獨享是否屬於某各類
最後在說明一點在上面的文章中所有語法中與【】括起來的部分是可以省略的部分。因為現在也是邊整理邊寫,可能會比較亂,有的內容會講不到,這些內容會在以後遇到的過程中詳細講解。