單例模式:如何只讓設(shè)計(jì)的類(lèi)只能創(chuàng)建一個(gè)對(duì)象
餓漢式
餓漢式
<code>
class Bank{//
private Bank(){}//私有化構(gòu)造器
private static Bank instance = new Bank(); //創(chuàng)建類(lèi)的對(duì)象,同時(shí)設(shè)置為private的,通過(guò)公共的來(lái)調(diào)用,體現(xiàn)封裝性,要求此對(duì)象也為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){//可能存在線(xiàn)程安全問(wèn)題的!
instance = new Bank();}
return instance;}}
</code>
main()方法 public static void main(String[] args){ //方法體 }
1)main()是一個(gè)方法杜顺,是主方法财搁,為程序的入口
2)權(quán)限修飾符:public protected 缺省 private ---面向?qū)ο蟮姆庋b性
3)對(duì)于方法來(lái)講:static final abstract
4)方法的返回值:void / 具體的返回值類(lèi)型(基本的數(shù)據(jù)類(lèi)型 & 引用數(shù)據(jù)類(lèi)型)蘸炸,方法內(nèi)部一定要有return//
5)方法名:命名的規(guī)則:xxxYyyZzz躬络。給方法命名時(shí),要見(jiàn)名之意/
6)形參列表:同一個(gè)方法名不同的形參列表的諸多個(gè)方法間構(gòu)成重載搭儒。 形參 & 實(shí)參---方法的參數(shù)傳遞機(jī)制:值傳遞
7)方法體:方法定義的是一種功能穷当,具體的實(shí)現(xiàn)由方法體操作。
代碼塊
代碼塊:是類(lèi)的第4個(gè)成員
作用:用來(lái)初始化類(lèi)的屬性
分類(lèi):只能用static來(lái)修飾淹禾。
靜態(tài)代碼塊:
1)里面可以有輸出語(yǔ)句
2)隨著類(lèi)的加載而加載馁菜,而且只被加載一次
3)多個(gè)靜態(tài)代碼塊之間按照順序結(jié)構(gòu)執(zhí)行
4)靜態(tài)代碼塊的執(zhí)行要早于非靜態(tài)代碼塊的執(zhí)行。
5)靜態(tài)的代碼塊中只能執(zhí)行靜態(tài)的結(jié)構(gòu)(類(lèi)屬性铃岔,類(lèi)方法)
非靜態(tài)代碼塊:
1)可以對(duì)類(lèi)的屬性(靜態(tài)的 & 非靜態(tài)的)進(jìn)行初始化操作汪疮,同時(shí)也可以調(diào)用本類(lèi)聲明的方法(靜態(tài)的 & 非靜態(tài)的)
2)里面可以有輸出語(yǔ)句
3)一個(gè)類(lèi)中可以有多個(gè)非靜態(tài)的代碼塊,多個(gè)代碼塊之間按照順序結(jié)構(gòu)執(zhí)行
4)每創(chuàng)建一個(gè)類(lèi)的對(duì)象毁习,非靜態(tài)代碼塊就加載一次智嚷。
5)非靜態(tài)代碼塊的執(zhí)行要早于構(gòu)造器
final關(guān)鍵字:final:最終的 ,可以用來(lái)修飾類(lèi)纺且、屬性盏道、方法
1)final修飾類(lèi):這個(gè)類(lèi)就不能被繼承。如:String類(lèi)载碌、StringBuffer類(lèi)猜嘱、System類(lèi)
2)final修飾方法:不能被重寫(xiě)。如:Object類(lèi)的getClass()
3)final修飾屬性:此屬性就是一個(gè)常量嫁艇,一旦初始化后朗伶,不可再被賦值。習(xí)慣上步咪,常量用大寫(xiě)字符表示论皆。
抽象:abstract,可以用來(lái)修飾類(lèi)、方法
abstract修飾類(lèi):抽象類(lèi)
1)不可被實(shí)例化
2)抽象類(lèi)有構(gòu)造器 (凡是類(lèi)都有構(gòu)造器)
3)抽象方法所在的類(lèi)纯丸,一定是抽象類(lèi)偏形。
4)抽象類(lèi)中可以沒(méi)有抽象方法。
當(dāng)我們?cè)O(shè)計(jì)一個(gè)類(lèi)觉鼻,不需要?jiǎng)?chuàng)建此類(lèi)的實(shí)例時(shí)候俊扭,就可以考慮將其設(shè)置為抽象的,由其子類(lèi)實(shí)現(xiàn)這個(gè)類(lèi)的抽象方法以后坠陈,就行實(shí)例化
abstract修飾方法:抽象方法
1)格式:沒(méi)有方法體萨惑,包括{}.如:public abstract void eat();
2)抽象方法只保留方法的功能,而具體的執(zhí)行仇矾,交給繼承抽象類(lèi)的子類(lèi)庸蔼,由子類(lèi)重寫(xiě)此抽象方法。
3)若子類(lèi)繼承抽象類(lèi)贮匕,并重寫(xiě)了所有的抽象方法姐仅,則此類(lèi)是一個(gè)"實(shí)體類(lèi)",即可以實(shí)例化
4)若子類(lèi)繼承抽象類(lèi),沒(méi)有重寫(xiě)所有的抽象方法刻盐,意味著此類(lèi)中仍有抽象方法掏膏,則此類(lèi)必須聲明為抽象的!