使用引用來代表(指向)乙個物件,引用用來訪問這個物件。
(乙個引用同一時間,只能指向乙個物件; 乙個物件可以有多個引用)
可變數量的引數:在方法裡,使用運算元組的方式處理引數即可
public
void
attack(hero... heros)
}
通過乙個類建立乙個物件,這個過程叫做例項化
例項化是通過呼叫構造方法(構造器)實現的。
一旦提供了乙個有參的構造方法// 方法名和類名一樣(包括大小寫)
// 沒有返回型別
public
hero()
public
static
void
main(string args)
同時又沒有顯式的提供乙個無參的構造方法
那麼預設的無參的構造方法,就「木有了「
和普通方法一樣,構造方法也可以過載
public
void
showaddressinmemory()
//引數名和屬性名一樣
//在方法體中,只能訪問到引數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. 構造方法私有化private
giantdragon()
//準備乙個類屬性,用於指向乙個例項化物件,但是暫時指向null
private static giantdragon instance;
//public static 方法,返回例項物件
public static giantdragon getinstance()
//返回 instance指向的物件
return instance;
}}餓漢式是立即載入的方式,無論是否會用到這個物件,都會載入。
如果在構造方法裡寫了效能消耗較大,佔時較久的**,比如建立與資料庫的連線,那麼就會在啟動的時候感覺稍微有些卡頓。
懶漢式,是延遲載入的方式,只有使用的時候才會載入。 並且有執行緒安全的考量(鑑於同學們學習的進度,暫時不對執行緒的章節做展開)。
使用懶漢式,在啟動的時候,會感覺到比餓漢式略快,因為並沒有做物件的例項化。 但是在第一次呼叫的時候,會進行例項化操作,感覺上就略慢。
看業務需求,如果業務上允許有比較充分的啟動和初始化時間,就使用餓漢式,否則就使用懶漢式
public
enum
season
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.繼承 繼承性主要...