日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA静态和非静态内部类

發布時間:2023/11/30 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA静态和非静态内部类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA靜態和非靜態內部類?

一直對java的靜態和非靜態內部類的東東理解不清楚,今天測試了一下,下面把測試結果記錄一下,加深印象。用于以后查找。?
直接上代碼。?
Java代碼?
  • package?com.test.xml;??
  • ??
  • /**?
  • ?*?@author?<a?href="mailto:dq201@126.com">du.qiang</a>?
  • ?*?@version?$Revision?1.1?$?2010-6-23?上午06:48:28?
  • ?*/??
  • public?class?OutClassTest?{??
  • ????static?int?a;??
  • ??
  • ????int?b;??
  • ??
  • ????public?static?void?test()?{??
  • ????????System.out.println("outer?class?static?function");??
  • ????}??
  • ??
  • ????public?static?void?main(String[]?args)?{??
  • ????????OutClassTest?oc?=?new?OutClassTest();??
  • ????????//?new一個外部類??
  • ????????OutClassTest?oc1?=?new?OutClassTest();??
  • ????????//?通過外部類的對象new一個非靜態的內部類??
  • ????????OutClassTest.InnerClass?no_static_inner?=?oc1.new?InnerClass();??
  • ????????//?調用非靜態內部類的方法??
  • ????????System.out.println(no_static_inner.getKey());??
  • ??
  • ????????//?調用靜態內部類的靜態變量??
  • ????????System.out.println(OutClassTest.InnerStaticClass.static_value);??
  • ????????//?不依賴于外部類實例,直接實例化內部靜態類??
  • ????????OutClassTest.InnerStaticClass?inner?=?new?OutClassTest.InnerStaticClass();??
  • ????????//?調用靜態內部類的非靜態方法??
  • ????????System.out.println(inner.getValue());??
  • ????????//?調用內部靜態類的靜態方法??
  • ????????System.out.println(OutClassTest.InnerStaticClass.getMessage());??
  • ????}??
  • ??
  • ????private?class?InnerClass?{??
  • ????????//?只有在靜態內部類中才能夠聲明或定義靜態成員??
  • ????????//?private?static?String?tt?=?"0";??
  • ????????private?int?flag?=?0;??
  • ??
  • ????????public?InnerClass()?{??
  • ????????????//?三.非靜態內部類的非靜態成員可以訪問外部類的非靜態變量和靜態變量??
  • ????????????System.out.println("InnerClass?create?a:"?+?a);??
  • ????????????System.out.println("InnerClass?create?b:"?+?b);??
  • ????????????System.out.println("InnerClass?create?flag:"?+?flag);??
  • ????????????//??
  • ????????????System.out.println("InnerClass?call?outer?static?function");??
  • ????????????//?調用外部類的靜態方法??
  • ????????????test();??
  • ????????}??
  • ??
  • ????????public??String?getKey()?{??
  • ????????????return?"no-static-inner";??
  • ????????}??
  • ????}??
  • ??
  • ????private?static?class?InnerStaticClass?{??
  • ????????//?靜態內部類可以有靜態成員,而非靜態內部類則不能有靜態成員。??
  • ????????private?static?String?static_value?=?"0";??
  • ??
  • ????????private?int?flag?=?0;??
  • ??
  • ????????public?InnerStaticClass()?{??
  • ????????????System.out.println("InnerClass?create?a:"?+?a);??
  • ????????????//?靜態內部類不能夠訪問外部類的非靜態成員??
  • ????????????//?System.out.println("InnerClass?create?b:"?+?b);??
  • ????????????System.out.println("InnerStaticClass?flag?is?"?+?flag);??
  • ????????????System.out.println("InnerStaticClass?tt?is?"?+?static_value);??
  • ????????}??
  • ??
  • ????????public?int?getValue()?{??
  • ????????????//?靜態內部類訪問外部類的靜態方法??
  • ????????????test();??
  • ????????????return?1;??
  • ????????}??
  • ??
  • ????????public?static?String?getMessage()?{??
  • ????????????return?"static-inner";??
  • ????????}??
  • ????}??
  • ??
  • ????public?OutClassTest()?{??
  • ????????//?new一個非靜態的內部類??
  • ????????InnerClass?ic?=?new?InnerClass();??
  • ????????System.out.println("OuterClass?create");??
  • ????}??
  • ??
  • }??


  • Java代碼?
  • /**?
  • ?*?總結:??
  • ?*?1.靜態內部類可以有靜態成員(方法,屬性),而非靜態內部類則不能有靜態成員(方法,屬性)。?
  • ?*?2.靜態內部類只能夠訪問外部類的靜態成員,而非靜態內部類則可以訪問外部類的所有成員(方法,屬性)。?
  • ?*?3.實例化一個非靜態的內部類的方法:?
  • ?*??a.先生成一個外部類對象實例?
  • ?*??OutClassTest?oc1?=?new?OutClassTest();?
  • ?*??b.通過外部類的對象實例生成內部類對象?
  • ?*??OutClassTest.InnerClass?no_static_inner?=?oc1.new?InnerClass();?
  • ?*??4.實例化一個靜態內部類的方法:?
  • ?*??a.不依賴于外部類的實例,直接實例化內部類對象?
  • ?*??OutClassTest.InnerStaticClass?inner?=?new?OutClassTest.InnerStaticClass();?
  • ?*??b.調用內部靜態類的方法或靜態變量,通過類名直接調用?
  • ?*??OutClassTest.InnerStaticClass.static_value?
  • ?*??OutClassTest.InnerStaticClass.getMessage()?
  • ?*/??
  • ? 原文地址:

    http://duqiangcise.iteye.com/blog/697476

    轉載于:https://www.cnblogs.com/scud001/p/3307380.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的JAVA静态和非静态内部类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。