本週學習
一、類和物件
1.定義類
【修飾符】class 類名
{
零個到多個構造器定義
零個到多個成員變數
零個到多個方法
}
修飾符:public、final、abstract(可省略)
構造器:一個類建立物件的根本途徑。若需要系統會提供預設構造器。
2.定義成員變數
【修飾符】型別 成員變數名 【=預設值】
修飾符:修飾符可以省略,也可以是public、protected、private、static、final,其中public、protected、private 三個最多隻能出現其中之一,可以與static、final組合起來修飾成員變數。
3.定義方法
[修飾符] 方法返回值型別 方法名(形參列表)
{
// 由零條到多條可執行性語句組成的方法體
}
修飾符:修飾符可以省略,也可以是public、protected、private、static、final、abstract;其中public、protected、private 三個最多隻能出現其中之一;abstr與static組合起來修飾方法。abstract和final最多隻能出現其中之一,可以和static組合修飾方法。
4.定義構造器
【修飾符】 構造器名(形參列表)
{
// 由零條到多條可執行性語句組成的方法體
}
構造器為一個特殊的方法。
例:
public class Person
{
//下面定義了兩個成員變數
public String name;
public int age;
//下面定義了一個say方法
public void say(String content)
{
system.out.println(content);
}
5.類例項化
// 使用Peron類定義一個Person型別的變數
Person p;
//透過new關鍵字呼叫Person類的構造器,返回一個Person例項
//將該Person例項賦給p變數
P = new Person();
或簡寫為
// 定義 p變數的同時併為 p變數賦值
Person p = new Person();
6.訪問物件
// 訪問 p的 name 例項變數,直接為該變數賦值
P.name“李剛”;
// 呼叫 p的say()方法,宣告 say()方法時定義了一個形參
// 呼叫該方法必須為形參指定一個值
P.Bay(“Java語言很簡單,學習很容易!”);
// 直接輸出P的name例項變數,將輸出 李剛
System.out.println(P.name);
7.引用
堆記憶體裡的物件可以有多個引用,即多個引用變數指向同一個物件,
//將p變數的值賦值給p2變數
Person p2 = p;
注:如果希望通知垃圾回收機制回收某個物件,只需切斷該物件的所有引用變數和它之間的關係即可,也就是把這些引用變數賦值為null。
8.this指標
this 可以代表任何物件,當this出現在某個方法體中時,它所代表的物件是不確定的,但它的型別是確定的,它所代表的物件只能是當前類;只有當這個方法被呼叫時,它所代表的物件才被確定下來:誰在呼叫這個方法,this就代表誰
二、方法詳解
1.傳遞機制
值傳遞:當方法內傳遞的是基本資料型別時採用值傳遞。
引用傳遞:主要發生在引用資料型別中。
2.形參個數可變的方法
方法定義時:將可變個數形參放在引數列表的最後,並在型別後面加上三個點(…)。
方法呼叫時:在呼叫帶有可變個數形參的方法時,可以傳入任意數量的該型別引數,或者不傳入任何引數。
3.遞迴方法
方法體內呼叫它本身。
4.方法過載
在同一個類中,多個方法的引數不相同,型別不同或者數量不同。
三、成員變數和區域性變數
Java變數可以分為成員變數和區域性變數。
成員變數可以分為兩類:例項變數和類變數。
區域性變數可以分為三類:形參、方法區域性變數和程式碼塊區域性變數。
1.類變數
a.生存週期
是在類的準備階段被建立,此時系統還沒有建立對應的物件。所以,類變數的建立早於例項變數。類變數會在類銷燬時一同被銷燬。
b.訪問方式
類.類變數名
c.作用範圍
整個類。
2.例項變數
a.生存週期
是在對應物件被銷燬時一同被銷燬。因為類一定在所有物件都被銷燬時才被銷燬。
b.訪問方式
引用變數名.例項變數名。
c.作用範圍
所屬物件內。
3.成員變數和區域性變數的區別
1.系統是否會預設初始化:
對於成員變數,系統會在類生成或者物件建立階段自動為其初始化,即使成員變數沒有顯式賦值,系統也會為其分配記憶體空間並且附上零值。但區域性變數除了形參外必須顯式初始化(形參的初始化是呼叫者透過實參值傳遞完成的),否則系統不會為其分配記憶體空間。
2.在記憶體中的位置不同:
成員變數儲存在堆記憶體中,與對應的類或者物件繫結。而區域性變數與方法繫結,一同儲存在棧記憶體中,方法執行結束,所有區域性變數都會被銷燬(程式碼塊區域性變數會在程式碼塊結束就出棧銷燬)。
四、隱藏和封裝
1.三個訪問控制符
public、protected、private
2.package、import、import static
五、深入構造器
1.構造器最大用處就是在建立物件時執行初始化。當程式設計師提供自定義構造器,系統便不再提供預設構造器。
2.構造器過載
同一個類具有多個構造器,多個構造器引數列表不同。
下週學習
物件導向(上)後五節。