Java語言基礎(chǔ):內(nèi)部類_第1頁
免費預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、java語言基礎(chǔ):內(nèi)部類 / 內(nèi)部類 public class innerclass private int i = 0;public int getint()return i;public void proc()innerclass inclass = new innerclass();system.out.println(inclass.getint();public class main public static void main(string args) outterclass outclass = new outterclass();outcc();/ 外部類cl

2、ass outterclass / 內(nèi)部類public class innerclass private int i = 0;public int getint()return i;public void proc()innerclass inclass = new innerclass();system.out.println(inclass.getint();public class main public static void main(string args) outterclass outclass = new outterclass();outcc();外部類可以

3、拜訪內(nèi)部類的私有成員,內(nèi)部類也可以拜訪外部類的私有成員:view plaincopy to clipboardprint?/ 外部類class outterclass private int mout = 10;/ 內(nèi)部類public class innerclass private int min = 0;public void printoutprivate()/ 挺直打印外部類的成員system.out.println(mout);public void printinprivate()innerclass inclass = new innerclass();/ 挺直打印內(nèi)部類的私有成

4、員system.out.println(inclass.min);public void printoutprivate()innerclass inclass = new innerclass();inclass.printoutprivate();public class main public static void main(string args) outterclass outclass = new outterclass();outclass.printinprivate();outclass.printoutprivate();/ 外部類class outterclass pr

5、ivate int mout = 10;/ 內(nèi)部類public class innerclass private int min = 0;public void printoutprivate()/ 挺直打印外部類的成員system.out.println(mout);public void printinprivate()innerclass inclass = new innerclass();/ 挺直打印內(nèi)部類的私有成員system.out.println(inclass.min);public void printoutprivate()innerclass inclass = new

6、 innerclass();inclass.printoutprivate();public class main public static void main(string args) outterclass outclass = new outterclass();outclass.printinprivate();outclass.printoutprivate();假如外部類的成員變量與內(nèi)部類的成員變量名字相同,當內(nèi)部類要拜訪外部類的該成員時,可以用法“outclass.this.mem”來區(qū)別:view plaincopy to clipboardprint?/ 外部類class

7、outterclass private int mmem = 10;/ 內(nèi)部類public class innerclass private int mmem = 0;public void printoutprivate()/ 挺直打印外部類的成員system.out.println(outterclass.this.mmem);/ 外部類class outterclass private int mmem = 10;/ 內(nèi)部類public class innerclass private int mmem = 0;public void printoutprivate()/ 挺直打印外部類

8、的成員system.out.println(outterclass.this.mmem);要創(chuàng)建一般內(nèi)部類,必需先創(chuàng)建相應(yīng)的外部類:view plaincopy to clipboardprint?/ 外部類class outterclass private int mmem = 10;/ 內(nèi)部類public class innerclass private int mmem = 0;public void printoutprivate()/ 挺直打印外部類的成員system.out.println(outterclass.this.mmem);public class main publi

9、c static void main(string args) outterclass outclass = new outterclass();outterclass.innerclass inclass = outclass.new innerclass();inclass.printoutprivate();/ 外部類class outterclass private int mmem = 10;/ 內(nèi)部類public class innerclass private int mmem = 0;public void printoutprivate()/ 挺直打印外部類的成員system

10、.out.println(outterclass.this.mmem);public class main public static void main(string args) outterclass outclass = new outterclass();outterclass.innerclass inclass = outclass.new innerclass();inclass.printoutprivate();也可以用下面的方式:view plaincopy to clipboardprint?/ 外部類class outterclass private int mmem

11、= 10;/ 內(nèi)部類public class innerclass private int mmem = 0;public void printoutprivate()/ 挺直打印外部類的成員system.out.println(outterclass.this.mmem);public innerclass newinnerclass() return new innerclass();public class main public static void main(string args) outterclass outclass = new outterclass();outtercl

12、ass.innerclass inclass = outclass.newinnerclass();inclass.printoutprivate();/ 外部類class outterclass private int mmem = 10;/ 內(nèi)部類public class innerclass private int mmem = 0;public void printoutprivate()/ 挺直打印外部類的成員system.out.println(outterclass.this.mmem);public innerclass newinnerclass() return new i

13、nnerclass();public class main public static void main(string args) outterclass outclass = new outterclass();outterclass.innerclass inclass = outclass.newinnerclass();inclass.printoutprivate();2. 靜態(tài)內(nèi)部類一般內(nèi)部類前面加上static修飾符,就成為靜態(tài)內(nèi)部類,靜態(tài)內(nèi)部類類似于c+的嵌套類,與一般內(nèi)部類相比有如下區(qū)分:靜態(tài)內(nèi)部類沒有指向外部類的引用,外部類對于它來說更像一個名字空間。一般內(nèi)部類不能有靜態(tài)

14、成員,靜態(tài)辦法,或另一個靜態(tài)內(nèi)部類;而靜態(tài)內(nèi)部類可以有這一切。靜態(tài)內(nèi)部類可以挺直創(chuàng)建,不必先創(chuàng)建外部類:view plaincopy to clipboardprint?/ 外部類class outterclass private int mmem = 0;/ 靜態(tài)內(nèi)部類static public class innerclass private int mmem = 0;public void printoutprivate()/ 這是錯誤的/ system.out.println(outterclass.this.mmem);public void printinprivate() inn

15、erclass inclass = new innerclass();/ 可以挺直拜訪靜態(tài)內(nèi)部類的成員system.out.println(inclass.mmem);public class main public static void main(string args) / 挺直創(chuàng)建靜態(tài)內(nèi)部類outterclass.innerclass inclass = new outterclass.innerclass();inclass.printoutprivate();/ 外部類class outterclass private int mmem = 0;/ 靜態(tài)內(nèi)部類static publ

16、ic class innerclass private int mmem = 0;public void printoutprivate()/ 這是錯誤的/ system.out.println(outterclass.this.mmem);public void printinprivate() innerclass inclass = new innerclass();/ 可以挺直拜訪靜態(tài)內(nèi)部類的成員system.out.println(inclass.mmem);public class main public static void main(string args) / 挺直創(chuàng)建靜態(tài)

17、內(nèi)部類outterclass.innerclass inclass = new outterclass.innerclass();inclass.printoutprivate();從上面描述可以看出,靜態(tài)內(nèi)部類與普通類沒有太大區(qū)分,只不過它是放在一個類的里面,這個類相當于它的名字空間,可以防止命名矛盾。3. 局部內(nèi)部類java可以把一個類定義在一個辦法里面,甚至是一個塊里面,它的作用域就在這個塊里面:view plaincopy to clipboardprint?/ 外部類class outterclass public void testlocalinner() if (true)cla

18、ss localinner public void proc() system.out.println("hello");/ 可以創(chuàng)建用法localinner localinner = new localinner();localic();/ 錯誤:超出類定義的作用域localinner localinner = new localinner();localic();/ 外部類class outterclass public void testlocalinner() if (true)class localinner public void

19、 proc() system.out.println("hello");/ 可以創(chuàng)建用法localinner localinner = new localinner();localic();/ 錯誤:超出類定義的作用域localinner localinner = new localinner();localic();局部內(nèi)部類的普通用途是實現(xiàn)某個接口,并作為這個接口傳出辦法被用法:view plaincopy to clipboardprint?/ 接口interface talker public void talk();/ 外部類cla

20、ss outterclass public talker gettalker() / 現(xiàn)實該接口的局部內(nèi)部類class sometalker implements talker public void talk() system.out.println("hello");/ 創(chuàng)建類實例并作為talker返回sometalker talker = new sometalker();return talker;public class main public static void main(string args) outterclass outclass = new out

21、terclass();talker talker = outclass.gettalker();talker.talk();/ 接口interface talker public void talk();/ 外部類class outterclass public talker gettalker() / 現(xiàn)實該接口的局部內(nèi)部類class sometalker implements talker public void talk() system.out.println("hello");/ 創(chuàng)建類實例并作為talker返回sometalker talker = new sometalker();return talker;public class main public static void main(string

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論