【小白轉碼】05
一、類和物件
1.類與物件的概念
-
什麼是物件?
-
物件:是一個具有特定屬性和行為特徵的具體事物。
-
-
什麼是類?
-
-
類與物件的關係
-
類是對一類事物的描述,是抽象的。
-
物件是一類事物的例項,是具體的。
-
類是物件的模板,物件是類的實體。
-
2.類的定義
類的格式:
public class 類名 {
//成員變數,描述這類事物的屬性
//成員方法,描述這類事物的行為
}
3.物件的建立與使用
建立物件語法格式:
類名 物件名= new 類名 ();
Person p = new Person();
使用物件的成員,使用“. ”操作:
使用成員變數:物件名.屬性
使用成員方法:物件名.方法名()
4.物件的記憶體分析
堆空間:存放new出來的物件
棧空間:儲存了局部變量表
方法區:儲存了常量、靜態資訊、類資訊等
System.out.println(new Student());////Student@7852e922
型別
二、成員變數
1. 變數的分類
根據定義位置不同分為:
-
區域性變數:定義在方法體內或其他區域性區域內的變數(之前所使用的都是main方法中定義的變數,為區域性變數)。
-
成員變數:定義在類的成員位置,在方法體外,與方法(例如main方法)平行的位置。並且有修飾符修飾。
根據修飾的不同成員變數又分為:
-
類變數:或叫靜態變數,有static修飾的成員變數。(後面再講)
-
例項變數:沒有static修飾的成員變數。
-
2. 成員變數的宣告
class 類名{
【修飾符】 資料型別 屬性名;
}
說明:常用修飾符有public、預設、private、protected、final、static
資料型別可以是任意基本資料型別和引用資料型別。
屬性名即變數名,符合識別符號的命名規則和規範。
3.例項變數
3.1、例項變數的特點
-
例項變數的值是屬於某個物件的
-
必須通過物件才能訪問例項變數
-
每個物件的例項變數的值是獨立的
-
-
成員變數有預設初始值(同陣列元素預設初始值)
資料型別 預設值 byte,short,int,long 0 float,double 0.0 char 0或'\u0000'表現為空 boolean false 陣列,類,介面等引用型別 null
3.2、例項變數的訪問
物件.例項變數
3.3、小結:例項變數與區域性變數的區別
例項變數 | 區域性變數 | |
---|---|---|
宣告的位置 | 直接宣告在類的成員位置 | 宣告在方法體中或其他區域性區域內(方法宣告上,構造方法,程式碼塊等) |
修飾符 | public、private、final等 | 不能使用訪問許可權修飾符,可以使用final |
記憶體載入位置 | 堆 | 棧 |
初始化值 | 有預設初始化值 | 無預設初始化值 |
生命週期 | 同對象的生命週期 | 隨著方法的呼叫而存在,方法呼叫完畢即消失 |
4.方法
4.1.概念
方法也叫函式,是一個獨立功能的定義,是一個類中最基本的功能單元。
把一個功能封裝為方法的目的是,可以實現程式碼重用,從而簡少程式碼量。
4.2成員方法的分類
根據修飾不同方法主要分為兩類:
-
例項方法:沒有static修飾的方法,必須通過例項物件來呼叫。
-
靜態方法:有static修飾的方法,也叫類方法,主要特點是可以由類名來呼叫。(後面再講)
4.3 方法的宣告
-
方法宣告的位置必須在類中方法外,在類的成員位置
-
語法格式:
【修飾符】 返回值型別 方法名(【引數列表 】)【extends fatherclass】【throws 異常列表】{
方法體;
【return 返回值;】
}
3.例項方法的呼叫格式
物件名.例項方法(【實參列表】)
4.4 形參與實參的概念理解
-
形參:在定義方法時方法名後面括號中宣告的變數稱為形式引數(簡稱形參)即形參出現在方法定義時。
-
實參:呼叫方法時方法名後面括號中的使用的值/變數/表示式稱為實際引數(簡稱實參)即實參出現在方法呼叫時。
4.5 方法呼叫的記憶體情況
方法不呼叫不執行,呼叫一次執行一次,每次呼叫會在棧中有一個入棧動作,即給當前方法開闢一塊獨立的記憶體區域,用於儲存當前方法的區域性變數的值,當方法執行結束後,會釋放該記憶體,稱為出棧,如果方法有返回值,就會把結果返回呼叫處,如果沒有返回值,就直接結束,回到呼叫處繼續執行下一條指令。
棧結構特點:先進後出,後進先出。
4.6 方法引數的值傳遞機制
方法的引數傳遞機制:實參給形參賦值,那麼反過來形參會影響實參嗎?
-
方法的形參是基本資料型別時,形參值的改變不會影響實參;
-
方法的形參是引用資料型別時,形參地址值的改變不會影響實參,但是形參地址值裡面的資料的改變會影響實參,例如,修改陣列元素的值,或修改物件的屬性值。
-
注意:String、Integer等特殊型別容易錯
-
4.7 方法的過載 overload
方法過載:同一個類中(本類宣告的或繼承自父類的)的方法,方法名相同,引數列表不同的情況,這就叫方法過載。
引數列表不同:指的是引數個數不同,資料型別不同,資料型別順序不同。
注意:與方法的返回值型別無關
4.8 可變形參
在JDK1.5之後,如果我們定義一個方法時,此時某個形參的型別可以確定,但是形參的個數不確定,那麼我們可以使用可變引數。
格式:
【修飾符】 返回值型別 方法名(【非可變引數部分的形參列表,】引數型別... 形參名){ }
注意:
(1)一個方法最多隻能有一個可變引數
(2)如果一個方法包含可變引數,那麼可變引數必須是形參列表的最後一個