單例模式:如何只讓設計的類只能創(chuàng)建一個對象
餓漢式
餓漢式
<code>
class Bank{//
private Bank(){}//私有化構(gòu)造器
private static Bank instance = new Bank(); //創(chuàng)建類的對象,同時設置為private的,通過公共的來調(diào)用,體現(xiàn)封裝性,要求此對象也為static的
public static Bank getInstance(){return instance;}}//此公共的方法,必須為static
</code>
懶漢式
<code>
class Bank{
private Bank(){}
private static Bank instance = null;
public static Bank getInstance(){
if(instance == null){//可能存在線程安全問題的!
instance = new Bank();}
return instance;}}
</code>
main()方法 public static void main(String[] args){ //方法體 }
1)main()是一個方法,是主方法,為程序的入口
2)權(quán)限修飾符:public protected 缺省 private ---面向?qū)ο蟮姆庋b性
3)對于方法來講:static final abstract
4)方法的返回值:void / 具體的返回值類型(基本的數(shù)據(jù)類型 & 引用數(shù)據(jù)類型),方法內(nèi)部一定要有return//
5)方法名:命名的規(guī)則:xxxYyyZzz。給方法命名時,要見名之意/
6)形參列表:同一個方法名不同的形參列表的諸多個方法間構(gòu)成重載。 形參 & 實參---方法的參數(shù)傳遞機制:值傳遞
7)方法體:方法定義的是一種功能,具體的實現(xiàn)由方法體操作。
代碼塊
代碼塊:是類的第4個成員
作用:用來初始化類的屬性
分類:只能用static來修飾。
靜態(tài)代碼塊:
1)里面可以有輸出語句
2)隨著類的加載而加載,而且只被加載一次
3)多個靜態(tài)代碼塊之間按照順序結(jié)構(gòu)執(zhí)行
4)靜態(tài)代碼塊的執(zhí)行要早于非靜態(tài)代碼塊的執(zhí)行。
5)靜態(tài)的代碼塊中只能執(zhí)行靜態(tài)的結(jié)構(gòu)(類屬性,類方法)
非靜態(tài)代碼塊:
1)可以對類的屬性(靜態(tài)的 & 非靜態(tài)的)進行初始化操作,同時也可以調(diào)用本類聲明的方法(靜態(tài)的 & 非靜態(tài)的)
2)里面可以有輸出語句
3)一個類中可以有多個非靜態(tài)的代碼塊,多個代碼塊之間按照順序結(jié)構(gòu)執(zhí)行
4)每創(chuàng)建一個類的對象,非靜態(tài)代碼塊就加載一次。
5)非靜態(tài)代碼塊的執(zhí)行要早于構(gòu)造器
final關(guān)鍵字:final:最終的 ,可以用來修飾類、屬性、方法
1)final修飾類:這個類就不能被繼承。如:String類、StringBuffer類、System類
2)final修飾方法:不能被重寫。如:Object類的getClass()
3)final修飾屬性:此屬性就是一個常量,一旦初始化后,不可再被賦值。習慣上,常量用大寫字符表示。
抽象:abstract,可以用來修飾類、方法
abstract修飾類:抽象類
1)不可被實例化
2)抽象類有構(gòu)造器 (凡是類都有構(gòu)造器)
3)抽象方法所在的類,一定是抽象類。
4)抽象類中可以沒有抽象方法。
當我們設計一個類,不需要創(chuàng)建此類的實例時候,就可以考慮將其設置為抽象的,由其子類實現(xiàn)這個類的抽象方法以后,就行實例化
abstract修飾方法:抽象方法
1)格式:沒有方法體,包括{}.如:public abstract void eat();
2)抽象方法只保留方法的功能,而具體的執(zhí)行,交給繼承抽象類的子類,由子類重寫此抽象方法。
3)若子類繼承抽象類,并重寫了所有的抽象方法,則此類是一個"實體類",即可以實例化
4)若子類繼承抽象類,沒有重寫所有的抽象方法,意味著此類中仍有抽象方法,則此類必須聲明為抽象的!