在上一篇中說到了Java的四大特性,裡面出現了很多名次,包括以後學習Java中也會出現很多常用到的名次,對初學者來說可能不知道是什麼意思,或者是對這些刺耳的理解不是特別透徹,這裡我就我自己的理解來解釋下這些詞的意思。 包 在Java中常說某個包下麵的某個類。那麼什麼是包呢?在平時操作電腦時,我們常江 ...
在上一篇中說到了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關鍵字來判斷某個獨享是否屬於某各類
最後在說明一點在上面的文章中所有語法中與【】括起來的部分是可以省略的部分。因為現在也是邊整理邊寫,可能會比較亂,有的內容會講不到,這些內容會在以後遇到的過程中詳細講解。