国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

八一八Java的內(nèi)部類,你知道多少?

來源:北大青鳥飛迅校區(qū)|發(fā)布時(shí)間:2013-04-26 17:45:19

  Java內(nèi)部類問題,在這給大家分享一下。 在說之前,我先列出幾個(gè)問題:

  1.外部類(非主類)通過怎樣的方式訪問內(nèi)部類?

  2.內(nèi)部類能不能訪問主類私有的屬性,為什么?

  3.內(nèi)部類能不能繼承別的類和接口?

  4.內(nèi)部類能不能是static的?

  5.在主類的方法里面可不可以定義內(nèi)部類?

  6.初始化主類的時(shí)候是不是也把內(nèi)部類給初始化了?為什么?

  7.怎樣寫一個(gè)匿名的內(nèi)部類?

  我目前想到的就這些,在我給大家陳述之前,希望大家好好想想,再往下看:

  第一個(gè)問題:外部類是怎樣引用內(nèi)部類的?這個(gè)問題,我想,可能有的人就會(huì)這樣寫:

  這是內(nèi)部類:InnerClass.

  1publicclassMainClass {

  2

  3 publicclassInnerClass{

  4 publicString name="name";

  5

  6 publicString getName() {

  7 returnname;

  8 }

  9

  10 publicvoidsetName(String name) {

  11 this.name=name;

  12 }

  13 }

  14}

  以下是引用:

  1publicclassCheckClass {

  2 publicstaticvoidmain(String[] args) {

  3 InnerClass innerClass=newInnerClass();

  4 System.out.println(innerClass.getName());

  5 }

  6}

  如果這樣寫的話,會(huì)報(bào)編譯錯(cuò)誤。那么為什么會(huì)報(bào)錯(cuò)呢?因?yàn)樵贘ava的設(shè)計(jì)中,如果想訪問一個(gè)類的內(nèi)部類,你必須通過宿主類去取它,然后,再對(duì)它進(jìn)行操作,Java就是想這樣把內(nèi)部類給封閉起來的,好吧,正確的寫法,我給大家貼出來:

  以下是內(nèi)部類的寫法:

  1publicclassMainClass {

  2 publicInnerClass getInnerClass() {

  3 returnnewInnerClass();

  4 }

  5

  6 publicclassInnerClass {

  7 publicString name="name";

  8

  9 publicString getName() {

  10 returnname;

  11 }

  12

  13 publicvoidsetName(String name) {

  14 this.name=name;

  15 }

  16 }

  17}

  如果你想訪問Java內(nèi)部類,你必須先拿到它的宿主類,這樣你才能對(duì)內(nèi)部類進(jìn)行操作:

  1 public class CheckClass {

  2 public static void main(String[] args) {

  3 MainClass mainClass = new MainClass();

  4 System.out.println(mainClass.getInnerClass().getName());

  5 }

  6 }

  這樣的話,編譯就不會(huì)報(bào)錯(cuò)了。

  好了,該回答第二個(gè)問題了,就是內(nèi)部類能不能訪問宿主類的私有屬性?回答是可以的。如果,你會(huì)看JVM的源碼的話,你就會(huì)看到,在編譯內(nèi)部類調(diào)用主類私有變量時(shí),會(huì)把它們轉(zhuǎn)換成一種特殊的符號(hào),JVM會(huì)把這種符號(hào)解析成公有的,然后讓內(nèi)部類調(diào)用。代碼很簡單,我就不貼了。

上一篇:內(nèi)部類學(xué)習(xí):Java接口與抽象類的區(qū)別?
下一篇:怎樣制作Javascript彈出窗口?

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號(hào)

Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有

湘ICP備14017520號(hào)-3

關(guān)注我們
在線咨詢
嘿,我來幫您!