單例模式+Final+Abstract

單例模式

概述: 一個類,只有一個實例。
單例是數據共享和項目安全(配合同步)的重要手段,單例可減低項目的併發性,增加耦合性。

單例模式語法要求:
1.必須有靜態屬性
2. 構造方法私有化
3. 獲取對象採用靜態方法

代碼示例(飢漢模式):

public class Singleton {
   public int count;
   private static Singleton instance=new Singleton(10);
   
   private Singleton(int n){
   	this.count = n;
   	System.out.println("count = " + this.count);
   }
	
   public int getCount(){
   	return this.count;
   }
   
   public static Singleton getInstance(){
     return instance.instance;
   }
}

public class TestSingleton{
   public static void main(String[] args){
       Singleton a1 = Singleton.getInstance();
       Singleton a2 = Singleton.getInstance();  
   }
}

Final

final關鍵字—用於類、方法、變量前。
final類—不可被繼承,如java.lang.Math就是一個 final類,不可被繼承。
final變量—在初始化後不可改變變量值,用於常量定義。
如果final變量是引用變量,則不可以改變它的引用對象,但可以改變對象的數據(屬性)。
final方法—不可被覆蓋,除了和private一起用。

Final+變量: Final static int i=5;
一加載類就放在方法區的靜態數據區,(也有認爲放在靜態常量池)。
必須顯示初始化,不能重複賦值只能賦值一次,不能默認初始化比如final static int i;

Final +全局變量
在堆中開闢空間,它和靜態全局變量一樣必須立刻顯示初始化,它也是不能第二次賦值。

Final+局部變量
它在棧中開闢空間,它可以不用顯示初始化,默認初始化就是個垃圾值,它顯示初始化也是隻能賦值一次,不能二次賦值。

Fianl+對象
在堆中開闢空間,也不能二次賦值,但屬性和方法可以重複使用賦值調用。

Abstract

1、抽象類不能被實例化,實例化的工作應該交由它的子類來完成,它只需要有一個引用即可。
2、抽象方法必須由子類來進行重寫。
3、只要包含一個抽象方法的抽象類,該方法必須要定義成抽象類,不管是 否還包含有其他方法。
4、抽象類中可以包含具體的方法,當然也可以不包含抽象方法。
5、子類中的抽象方法不能與父類的抽象方法同名。
6、abstract 不能與 final 並列修飾同一個類。
7、abstract 不能與 private、static、final 或 native 並列修飾同一個方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章