單例設計模式和訪問權限的理解
一個類只允許有一個對象,保證所有引用的對象都是同一個對象。
因爲只允許存在一個對象,則不允許在外面直接new出新的對象,所以應該把構造器設爲private,。
在類內定義一個公開的靜態方法,讓使用者進行調用,通過該方法去獲得一個實例。
例:
public calss Singleton{
private static Singleton s;
private Singleton(){}
public static Singleton newInstance(){
if ( s == null)
s = new Singleton();
return s;
}
}
修飾符final:不允許改變,可以修飾變量、方法、類
final修飾變量:
被fianl修飾的變量就會變成常量,一旦賦值不能改變
常量可以在初始化時直接賦值,也可以在構造方法裏賦值,只能在這兩種方法裏二選一,不能不爲常量賦值
常量不會有默認初始值
鎖定棧,使棧中的數據不可以改變
靜態常量只能在初始化時直接賦值
final修飾方法:
被final修飾的方法將不能被其子類覆蓋,保持方法的穩定不能被覆蓋
final修飾類:
被final修飾的類將不能被繼承
final類中的方法也都是final的
注意:
final不能用來修飾構造方法
訪問權限控制:
private:
本類內部可以訪問
不能繼承到子類
default:
本類內部可以訪問,同包其他類也可以訪問。
同包可繼承
protected:
本類內部可以訪問,不同包的子類也可以訪問,同包/ 其他類也可以訪問。
能繼承到子類
public:
任何地方都可以訪問
能繼承到子類
因爲只允許存在一個對象,則不允許在外面直接new出新的對象,所以應該把構造器設爲private,。
在類內定義一個公開的靜態方法,讓使用者進行調用,通過該方法去獲得一個實例。
例:
public calss Singleton{
private static Singleton s;
private Singleton(){}
public static Singleton newInstance(){
if ( s == null)
s = new Singleton();
return s;
}
}
修飾符final:不允許改變,可以修飾變量、方法、類
final修飾變量:
被fianl修飾的變量就會變成常量,一旦賦值不能改變
常量可以在初始化時直接賦值,也可以在構造方法裏賦值,只能在這兩種方法裏二選一,不能不爲常量賦值
常量不會有默認初始值
鎖定棧,使棧中的數據不可以改變
靜態常量只能在初始化時直接賦值
final修飾方法:
被final修飾的方法將不能被其子類覆蓋,保持方法的穩定不能被覆蓋
final修飾類:
被final修飾的類將不能被繼承
final類中的方法也都是final的
注意:
final不能用來修飾構造方法
訪問權限控制:
private:
本類內部可以訪問
不能繼承到子類
default:
本類內部可以訪問,同包其他類也可以訪問。
同包可繼承
protected:
本類內部可以訪問,不同包的子類也可以訪問,同包/ 其他類也可以訪問。
能繼承到子類
public:
任何地方都可以訪問
能繼承到子類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.