內部類和外部類之間的引用

2021-09-11 07:32:16 字數 1887 閱讀 8133

內部類:

①靜態內部類中可以有非靜態的方法

②當內部類中有靜態方法或者靜態成員變數時,一定是靜態內部類

一般內部類在外部類的成員變數位置,像這樣:

1 public class outer 

5 }

1、外部類訪問內部類:

內部類被static修飾:可以直接new

inner in = new inner();

內部類沒有被static修飾:得先new出來外部類的例項,再new內部類的

inner in = new outer().new inner();

2、內部類訪問外部類:(外部類.this.變數)

1 public class outer 

12 }

13

14 private void test1()

17 public static void main(string args)

21 }

輸出為:7,8,9,test

總結:輸出是9的原因:因為內部類持有乙個外部類的引用,格式:外部類名.this

可以呼叫private方法原因是:因為他們在乙個類outer中所以可以呼叫

3、外部類和內部類中的方法相互訪問:

①外部類的靜態方法test和非靜態內部類的非靜態方法voice的相互訪問:

!  test----->voice       先new外類再new內類,再調方法

1 public class outerclass 

6 }

7 public static void test()

10 public static void main(string args)

14 }

輸出:voice();

!!  voice----->test        外類.this.方法(持有的外部類的引用)

1 public class outerclass 

6 }

7 public static void test()

10 public static void main(string args)

14 }

輸出:test();

②外部類的非靜態方法test和靜態內部類中的非靜態方法voice之間的相互呼叫

! voice------>test

1 public class outerclass 

6 }

7 public void test()

10 public static void main(string args)

13 }

輸出:test();

!!  test----->voice

1 public class outerclass 

6 }

7 public void test()

10 public static void main(string args)

13 }

輸出:voice();

4、總結:

外部類訪問內部類:必須建立內部類的物件

內部類訪問外部類:內部類可以直接訪問外部類的成員包括私有成員,因為外部類持有內部類的引用

特例:內部類寫在外部類的方法中(即區域性變數的位置)

1、內部來外部類均可定義變數/常量

2、只能被final/abstract修飾

3、只能訪問被final/abstract修飾的變數

4、可以直接訪問外部類中的成員,因為還持有外部類的引用

參考原文:

內部類和外部類之間互相訪問

內部類與外部類之間的成員互相訪問 內部類可以訪問外部類的任何成員,包括private成員。外部類訪問內部類的成員需要建立內部類的物件,之後可以訪問內部類的任何成員,包括private成員,需要注意的是成員內部類不可以有靜態成員。當外部類的成員和內部類的成員重名時單單用this是區分不了的。在內部類中...

內部類 和外部類之間的訪問關係

外部類和內部類的訪問 1成員內部類可以無條件訪問外部類的所有成員屬性和成員方法 包括private成員和靜態成員 2.外部類訪問內部類 首先,要有內部類的物件 但是內部類是依附於外部類存在的 所以,先要建立外部類的物件。方式如下 內部類之間的訪問 非靜態內部類呼叫非靜態內部類 直接呼叫new類 非靜...

內部類與外部類

在乙個類體之內在定義乙個類 該情況下外面的類稱為 外部類 裡面類稱為 內部類 內部類內部類可以很方便訪問外部類的私有成員屬性,外部類可以通過內部類物件來訪問內部類的私有成員屬性。內部類物件例項化語法格式 外部類.內部類 物件名 new 外部類物件.new內部類構造方法 分為靜態內部類和非靜態內部類 ...