物件導向基礎 構造方法私有化 物件陣列 內部類

2021-07-10 20:59:27 字數 3261 閱讀 6606

類的封裝性不光體現在對屬性的封裝上,實際上方法也是可以被封裝的,當然,在方法封裝上也包含了對構造方法的封裝。例如如下**就是對構造方法封裝。

class singleton

public void print()

};

使用

class singleton

public void print()

};public class singletondemo02

};

此時,被私有化構造方法的singleton類,不能在外部例項化,但是可以在內部例項化,如下所示:

class singleton

public void print()

};public class singletondemo03

};

乙個類的構造方法被私有化之後,則只能從其類的內部取得例項化物件,那麼此時考慮的問題就是如何把內部生成的instance物件拿到外部類,這樣外部就可以直接通過此物件進行例項化。

正常情況下,instance屬性只能通過singleton類的例項化物件才可以進行呼叫,如果在沒有例項化物件的時候依然可以取得instance物件,則就需要將instance宣告成static訪問型別,因為使用static宣告的變數,可以直接使用類名進行訪問。如下所示:

class singleton

public void print()

};public class singletondemo04

};

正常情況下,這些屬性應該封裝起來,所以以上**最好修改為以下形式:

class singleton

private singleton()

public void print()

};public class singletondemo05

};

構造方法私有化之後,就可以通過以上的形式取得例項化物件。

程式的意義在於:將構造方法私有化防止外部生成物件,只能通過靜態方法獲得第一次初始化且是唯一的單例物件。

所謂的物件陣列,就是指包含了一組相關的物件,但是在物件陣列的使用中一定要注意:陣列一定要先開闢空間,但是因為其是引用資料型別,所以陣列裡的每乙個物件都是null值,則在使用的時候陣列中的每乙個物件必須分別進行例項化操作。

物件陣列的宣告

類 物件陣列名稱 = new 類[陣列長度];

class person

public string getname()

};public class objectarraydemo01

public string getname()

};public class objectarraydemo02 ;

system.out.println("\n**********==== 陣列輸出 ***************==") ;

for(int x=0;x

注意:物件陣列中的每個元素都必須單獨例項化,否則內容就為null。

在乙個類的內部還存在另外乙個類,則稱為內部類。

在類內部也可以定義另外乙個類。如果在類outer的內部再定義乙個類inner,此時inner就稱為內部類,而類outer則稱為外部類。

內部類可宣告成public或private。當內部類宣告成public或private時,對其訪問的限制與成員變數和成員方法完全相同。內部類的定義格式如下:

};

以上程式中,inner類作為outer類的內部類存在,並且在外部類fun()方法之中直接例項化內部類的物件並呼叫print()方法。

內部類存在的特點:

缺點:正常乙個類操作時,在類中最好只定義屬性和方法,如果再定義乙個類的話,則肯定破壞了類的結構。

優點:可以實現兩個類之間的資料訪問,內部類可以訪問外部類的屬性。拆分類驗證如下:

class outer

public string getinfo()

};class inner

public void print()

};public class innerclassdemo02

};

如果將內部類拿到外部之後,會發現**增加了,而且複雜度增加了。使用內部類的最大優點,可以方便的訪問外部類中的私有屬性。但是,以上的內部類,是無法在外部直接呼叫的,是無法按照外部類的形式使用的。

使用static宣告內部類

如果乙個內部類使用static關鍵字宣告,則此內部類就稱為外部類,可以直接通過外部類.內部類進行訪問。

class outer

}; public void fun()

};public class innerclassdemo03

};

使用static可以宣告乙個內部類,宣告的內部類就稱為外部類,可以在類的外部呼叫,但是如果想訪問外部類的屬性,則此屬性必須是static訪問許可權的。

在外部類訪問內部類:

乙個內部類除了可以通過外部類訪問,也可以直接在其他類中呼叫,但是呼叫的格式必須是:

外部類.內部類 內部類物件 = 外部類例項.new 內部類();

class outer

}; public void fun()

};public class innerclassdemo04

};

還可以在方法中定義內部類

乙個類可以在任意位置上定義,如下所示  可以在方法內定義內部類。但是內部類所在方法的引數必須定義成final型別。

class outer

};new inner().print() ; // 通過內部類的例項化物件呼叫方法

總結:內部類在實際的開發中非常有用。如果使用static宣告內部類的情況下,切記,使用static宣告的內部類是外部類,操作的時候要使用 「外部類.內部類」的形式訪問。

物件導向基礎 構造方法私有化 物件陣列 內部類

類的封裝性不光體現在對屬性的封裝上,實際上方法也是可以被封裝的,當然,在方法封裝上也包含了對構造方法的封裝。例如如下 就是對構造方法封裝。class singleton public void print 使用 class singleton public void print public cla...

構造方法私有化

本章目標 了解構造方法私有化的目的 掌握單態設計模式 構造方法私有化 類的封裝性不光體現在對屬性的封裝上,實際上方法也是可以被封裝的,當然,在方法封裝中也包含了對構造方法的封裝。例如 以下的 就是對構造方法進行了封裝。class singleton public void print 程式的意義 單...

物件導向 封裝和private私有化

封裝的概述 封裝是指隱藏物件的屬性和實現細節,僅僅對外提供了可見的公共的方法。將不需要或則不能對外提供的內容隱藏起來,進行封裝。簡單地說就是將功能的具體實現 寫到方法中,外界只需要呼叫該方法名就可實現功能。封裝的表現 函式就是乙個基本的封裝體。類也是乙個封裝體 封裝的優點 1 提高了 的復用性。2 ...