如何保證對象的唯一性

來源:互聯網
上載者:User

標籤:blog   java   os   div   ar   new   log   程式   

/*如何保證對象的唯一性:   1.不允許其他程式用new來建立該類對象。   2.在該類建立一個本類執行個體。   3.對外提供一個方法讓其他程式可以擷取該對象的引用。*/public class Test{    public static void main(String[] args){          //Subject sub = Subject.oSub;//這種方法不可控,一般不訪問成員   Subject sub = Subject.getInstance();//我們可以在方法中增加條件,根據條件是否返回對象的引用,增加程式的可控性!   new Student().show(sub);   new Teacher().show(sub);   }}class Subject{    public  String sub;public static Subject oSub = new Subject();private Subject(){    sub = "電腦科學與技術";}public static Subject getInstance(){    //oSub = new Subject();//if(****) 增加 if 判斷 可以 增加程式的可控性return oSub;}public String getSubject(){return sub;}public void setSubjcet(String name){    sub = name;}}/* 靜態成員變數和普通成員變數的顯示初始化的不同之處: 以下面的例子為例: 靜態變數的顯示初始化編譯之後不會放進 建構函式中!(想一想啊,如果放進了建構函式中,那不就是產生對象了嗎?那可能嗎?      它是靜態,是屬於類的!普通成員變數是屬於對象的,所以顯示初始化會放進建構函式中)所以不會使建構函式一直調用,最終棧溢出 而普通成員變數的顯示初始化編譯之後回放進建構函式中, 這樣就會導致建構函式一直被反覆調用! class Subject{    public  String sub;//public Subject ss = new Subject();public static Subject oSub = new Subject();//惡漢式        //public static Subject oSub = null;//懶漢式private Subject(){            //oSub = new Subject();//oSub是靜態變數,加上這一句就會導致oSub顯示初始化時棧溢出!    sub = "電腦科學與技術";}public static Subject getSubject(){        return oSub;                //return oSub = new Subject();}}*/class Student{    public void show(Subject sub){    System.out.println(sub.sub);}}class Teacher{    public void show(Subject sub){    System.out.println(sub.sub);}}

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.