⑴ synchronized
synchronized是解決多線程中同步問題的一個關鍵字。比如火車站賣票,如果不同步的話,很可能當一個窗口賣完了某一張票後,另一個窗口依然顯示有那張票,但是取的時候就取不到了。加入synchronized後當一個窗口訪問這張票的時候另一個窗口不能訪問這張票。不知道這樣解釋你懂不懂?
下面是singleton:
public class Singleton {
private Singleton s;
private Singleton()
{
}
public static Singleton getSigleton()
{
if(s==null)s=new Singleton();
return s;
}
}
Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
在很多操作中,比如建立目錄 資料庫連接都需要這樣的單線程操作。
上面的程序就是一個單例模式,這個類的構造方法用private修飾了,所有在外邊都不能調用,也就不能new Singleton();得到實例,那麼
想得到實例就得調用它的靜態方法getSigleton();即Singleton.getSigleton();就會返回一個Singleton的實例,注意此方法中的語句,即如果你是第一次調用這個方法那麼它會給你new一個實例,以後再調用得到的都是這個實例,也就是說從始至終就只有一個Singleton的實例,這就是單例模式。
⑵ java構造方法只好用public修飾嗎
這個是根據你的需求來決定的、你要是不在類外使用構造可以不用public的。
例如:
public class User{
private int id;
private User(){
}
public User(int id){
this.id = id;
}
}
當然了你要是這樣寫了、你就不能在類外(new User();)實例化這個類了,只能使用new User(id);
⑶ java中構造函數不能用哪些修飾符修飾
java中構造函數不能使用其他修飾符進行修飾,如sataic ,final,synchronized,native,abstract等修飾符都不可以修飾構造方法。
又及:構造方法雖然看起來沒有返回類型,但其實他返回的是這個對象的引用,因類型固定所以不加。如果構造方法修飾符為私有,則是單例模式。
java中構造方法可以使用任意一種訪問修飾符,public,protected,private和默認(friendly)
⑷ 一般構造方法我們都是用default或者public去修飾,那為什麼有的constuctour會用private去修飾呢
為了不讓這個類可以被實例化,JAVA通常是在單例模式中運用。而C++則是構成所謂的nonble對象。
單例模式你可以大概理解成:這個類在整個環境中扮演的是大管家的角色,只需要有一個實例就夠了。例如:
classT{
staticTuniqueInstance=newT();
publicTgetInstance(){returnT;}
privateT(){}
}
⑸ java構造方法只能用public修飾嗎
不是的啊,也可以是private 的,使用private 時,多用來實現單例模式。
也不是static 的,構造方法有java 虛擬機調用。
------解決方案--------------------------------------------------------
將構造方法設定為public,只是為了限制對象的實例化,是為了屏蔽掉外部通過new 實例當前對象。
------解決方案--------------------------------------------------------
構造方法有他的作用。
也有static 的。用法不同。
------解決方案--------------------------------------------------------
構造方法可以用 public、private、protected 修飾,但不能用 static,因為構造方法是類
創建實例時,自動調用的;若構造方法定義為私有,便不能有繼承子類,因為子類使用父類構造方法
------解決方案--------------------------------------------------------
四個作用域都可以有的。
public,外部可以自由訪問
private,在單例模式中使用,即對外開放build 介面
------解決方案--------------------------------------------------------
不同聲明類的訪問許可權:
1.public: 同一個類 同一個包 子類 其他包中的類
2.protected: 同一個類 同一個包 子類
3.private: 同一個類
至於你說的static,這個是用來聲明靜態類的,也就是說不用實例化類就可以使用,一般用
於修飾靜態變數和靜態方法。
⑹ 單例模式
單例模式最核心是,該類只有一個實例。
你在任意地方調用 EagerSingleton.getInstance(); 總是獲取到同一個實例。
這個實例和普通的實例是一摸一樣,普通實例一般是調用一次創建一次,但單例模式的實例總是只有一個。
你在10個地方調用 EagerSingleton.getInstance(),得到的EagerSingleton cm都是同一個實例。
⑺ Java中的構造方法可以被只可以被哪些修飾詞修飾說出所有的能修飾構造方法的修飾詞,謝謝了
構造方法有4種修飾,public、protected、默認、private。public的構造方法你可以用 A a =new A(); 這樣來創建對象 而protected、默認修飾的構造方法你只能在這個類里進行創建該對象。 private的就不能new來創建對象了。構造方法本來就是為了方便在其他類創建不同的對象,所以構造方法一般用public修飾,protected、默認修飾符很少見。而private基本不用來修飾構造方法。希望對你有所幫助。
⑻ 單例模式中 private static Singleton instance = new Singleton() 很多不用final修飾,
你首先要明白final修飾變數的功能是,一次初始化不能再被修改,既然是私有變數,就只考慮內部對這個變數的處理了,如果需要修改就不加final
而在單例模式中,如果存在釋放資源的情況下,就不能加final修飾了,比如針對你貼的這個單例,如果提供方法
publicvoidreleaseInstance(){
if(instance!=null){
instance=null;
}
}
釋放資源之後,如果需要重新使用這個單例,就必須存在重新初始化的過程,所以不能加final,對於不需要釋放資源的情況,可以加final
總而言之,要不要加final修飾,可以根據情況而定
⑼ 構造方法的訪問許可權都可以使什麼的啊 可不可以是默認的啊
當然可以了
雖然沒試過 不過應該是沒有protected 因為構造方法是不能被繼承的