国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類的區(qū)別

2019-11-09 16:21:04
字體:
供稿:網(wǎng)友

轉(zhuǎn)載自:https://www.zhihu.com/question/28197253

示例代碼如下:

static class Outer {	class Inner {}	static class StaticInner {}}Outer outer = new Outer();Outer.Inner inner = outer.new Inner();

Outer.StaticInner inner0 = new Outer.StaticInner();

靜態(tài)內(nèi)部類的作用:只是為了降低包的深度,方便類的使用,靜態(tài)內(nèi)部類適用于包含類當(dāng)中,但又不依賴與外在的類,不用使用外在類的非靜態(tài)屬性和方法,只是為了方便管理類結(jié)構(gòu)而定義。在創(chuàng)建靜態(tài)內(nèi)部類的時(shí)候,不需要外部類對(duì)象的引用。

非靜態(tài)內(nèi)部類有一個(gè)很大的優(yōu)點(diǎn):可以自由使用外部類的所有變量和方法

根據(jù)Oracle官方的說法:Nested classes are divided into two categories: static and non-static. Nested classes that are declared static are called static nested classes. Non-static nested classes are called inner classes.從字面上看,一個(gè)被稱為靜態(tài)嵌套類,一個(gè)被稱為內(nèi)部類。從字面的角度解釋是這樣的:什么是嵌套?嵌套就是我跟你沒關(guān)系,自己可以完全獨(dú)立存在,但是我就想借你的殼用一下,來隱藏一下我自己。什么是內(nèi)部??jī)?nèi)部就是我是你的一部分,我了解你,我知道你的全部,沒有你就沒有我。(所以內(nèi)部類對(duì)象是以外部類對(duì)象存在為前提的)官方解釋:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html靜態(tài)內(nèi)部類就是個(gè)獨(dú)立的類。之所以要弄這么個(gè)東西,只是起到一個(gè)注釋的效果,而且這個(gè)注釋可靜態(tài)檢查。比如有A,B兩個(gè)類,B有點(diǎn)特殊,雖然可以獨(dú)立存在,但只被A使用。這時(shí)候怎么辦?如果把B并入A里,復(fù)雜度提高,搞得A違反單一職責(zé)。如果B獨(dú)立,又可能被其他類(比如同一個(gè)包下的C)依賴,不符合設(shè)計(jì)的本意。所以不如將其變成A.B,等于添加個(gè)注釋,告訴其他類別使用B了,它只跟A玩。非靜態(tài)的才是真正的內(nèi)部類,對(duì)其外部類有個(gè)引用。

總結(jié):一 . 靜態(tài)內(nèi)部類可以有靜態(tài)變量和方法,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員和靜態(tài)方法。 二 . 靜態(tài)內(nèi)部類的非靜態(tài)變量和方法可以訪問外部類的靜態(tài)變量,而不可訪問外部類的非靜態(tài)變量;

三 . 非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問外部類的非靜態(tài)變量和方法。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广水市| 鹰潭市| 徐州市| 郯城县| 和田县| 岳池县| 大余县| 佛冈县| 阿鲁科尔沁旗| 体育| 蓬莱市| 盐池县| 瑞安市| 大冶市| 玛曲县| 丰宁| 白沙| 商丘市| 铅山县| 彭泽县| 和林格尔县| 嘉义市| SHOW| 上林县| 五常市| 盐边县| 建湖县| 定西市| 常熟市| 建阳市| 北京市| 油尖旺区| 通许县| 会同县| 桂林市| 泰兴市| 信宜市| 柘荣县| 商水县| 县级市| 木里|