Java重新來過五(類和物件,)

2021-09-09 05:21:40 字數 3851 閱讀 3673

使用引用來代表(指向)乙個物件,引用用來訪問這個物件。

(乙個引用同一時間,只能指向乙個物件;        乙個物件可以有多個引用)

可變數量的引數:在方法裡,使用運算元組的方式處理引數即可

publicvoidattack(hero... heros)

}

通過乙個類建立乙個物件,這個過程叫做例項化

例項化是通過呼叫構造方法(構造器)實現的。

// 方法名和類名一樣(包括大小寫)// 沒有返回型別publichero()publicstaticvoidmain(string args)

一旦提供了乙個有參的構造方法 

同時又沒有顯式的提供乙個無參的構造方法 

那麼預設的無參的構造方法,就「木有了「

和普通方法一樣,構造方法也可以過載

publicvoidshowaddressinmemory()

//引數名和屬性名一樣

//在方法體中,只能訪問到引數name

public void setname1(string name)

//為了避免setname1中的問題,引數名不得不使用其他變數名

public void setname2(string heroname)

//通過this訪問屬性

public void setname3(string name)

如果要在乙個構造方法中,呼叫另乙個構造方法,可以使用this()

//帶乙個引數的構造方法

public hero(string name)

//帶兩個引數的構造方法

public hero(string name,float hp)

變數有兩種型別 基本型別 和類型別 

引數也是變數,所以傳參分為 

基本型別傳參 

類型別傳參

基本型別傳參 :

在方法內,無法修改方法外的基本型別引數

類型別傳參:

類型別又叫引用 ,可以改變方法外的類型別引數值

如果乙個變數是基本型別

比如 int hp = 50;

我們就直接管hp叫變數

=表示賦值的意思。

如果乙個變數是類型別

比如 hero h = new hero();

我們就管h叫做引用。

=不再是賦值的意思

=表示指向的意思

比如 hero h = new hero();

這句話的意思是

引用h,指向乙個hero物件

使用同乙個包下的其他類,直接使用即可 

但是要使用其他包下的類,必須import

成員變數有四種修飾符 

private 私有的 

package/friendly/default 不寫     沒有修飾符即代表package/friendly/default 

protected 受保護的 

public 公共的

屬性通常使用private封裝起來

方法一般使用public用於被呼叫

會被子類繼承的方法,通常使用protected

作用範圍最小原則

當乙個屬性被static修飾的時候,就叫做類屬性,又叫做靜態屬性 

當乙個屬性被宣告成類屬性,那麼所有的物件,都共享乙個值 

與物件屬性對比: 

不同物件的 物件屬性 的值都可能不一樣。 

比如蓋倫的hp 和 提莫的hp 是不一樣的。 

但是所有物件的類屬性的值,都是一樣的

訪問類屬性:兩種方式:                       物件.類屬性           類名.類屬性(建議使用這個)

如果乙個屬性,每個英雄都不一樣,比如name,這樣的屬性就應該設計為物件屬性,因為它是跟著物件走的,每個物件的name都是不同的

如果乙個屬性,所有的英雄都共享,都是一樣的,那麼就應該設計為類屬性。比如血量上限,所有的英雄的血量上限都是 9999,不會因為英雄不同,而取不同的值。 這樣的屬性,就適合設計為類屬性

類方法: 又叫做靜態方法 

物件方法: 又叫例項方法,非靜態方法 

訪問乙個物件方法,必須建立在有乙個物件的前提的基礎上 

訪問類方法,不需要物件的存在,直接就訪問

訪問類方法:兩種方式:                       物件.類方法           類名.類方法(建議使用這個)

類方法不隨物件的改變而變化,物件方法隨物件的改變而改變

物件屬性初始化有3種:

package charactor;

public class hero

public hero()

}

類屬性初始化有2種:

//物品欄的容量

public static int itemcapacity=8; //宣告的時候 初始化

static

餓漢式:無論如何都會建立乙個例項

懶漢式:只有在呼叫getinstance的時候,才會建立例項

1. 構造方法私有化privategiantdragon()

//準備乙個類屬性,用於指向乙個例項化物件,但是暫時指向null

private static giantdragon instance;

//public static 方法,返回例項物件

public static giantdragon getinstance()

//返回 instance指向的物件

return instance;

}}餓漢式是立即載入的方式,無論是否會用到這個物件,都會載入。

如果在構造方法裡寫了效能消耗較大,佔時較久的**,比如建立與資料庫的連線,那麼就會在啟動的時候感覺稍微有些卡頓。

懶漢式,是延遲載入的方式,只有使用的時候才會載入。 並且有執行緒安全的考量(鑑於同學們學習的進度,暫時不對執行緒的章節做展開)。

使用懶漢式,在啟動的時候,會感覺到比餓漢式略快,因為並沒有做物件的例項化。 但是在第一次呼叫的時候,會進行例項化操作,感覺上就略慢。

看業務需求,如果業務上允許有比較充分的啟動和初始化時間,就使用餓漢式,否則就使用懶漢式

publicenumseason

public class helloworld }}

假設在使用switch的時候,不是使用列舉,而是使用int,而int的取值範圍就不只是1-4,有可能取乙個超出1-4之間的值,這樣判斷結果就似是而非了。(因為只有4個季節)

但是使用列舉,就能把範圍死死的限定在這四個當中

遍歷列舉:使用增強for迴圈

for(season s : season.values())

五 類和物件

類是封裝物件屬性和行為的載體,物件是類抽象出來的乙個例項。類 具有相同特性和行為的一類事物。1 物件導向的特點 1 封裝 將物件的屬性和行為封裝起來。保證了類內部資料結構的完整性。2 繼承 繼承是關聯的一種。3 多型 將父類物件應用於子類的特徵。由父類實現統一風格,例項化子類的物件。多型的實現不依賴...

java類和物件

在物件導向的處理過程中,類既包括了資料也封裝了資料。類中有成員變數和成員函式,統稱為類的成員。1.類的宣告 class 繼承 2.成員變數的宣告 public class person 3.成員方法的宣告 public int gethurtpoint public void sethurtpoin...

Java類和物件

物件導向的特點 1.封裝 封裝是物件導向程式設計的核心思想。將物件的屬性和行為封裝起來,而將物件的屬性的行為封裝起來的載體就是類。類通常對客戶隱藏其實現細節,這就是封裝的思想。好處 保證類內部資料結構的完整性,應用該類的客戶不能輕易直接操縱此資料結構,而只能執行類允許公開的資料。2.繼承 繼承性主要...