內部類:
①靜態內部類中可以有非靜態的方法
②當內部類中有靜態方法或者靜態成員變數時,一定是靜態內部類
一般內部類在外部類的成員變數位置,像這樣:
1 public class outer1、外部類訪問內部類:5 }
內部類被static修飾:可以直接new
inner in = new inner();
內部類沒有被static修飾:得先new出來外部類的例項,再new內部類的
inner in = new outer().new inner();
2、內部類訪問外部類:(外部類.this.變數)
1 public class outer輸出為:7,8,9,test12 }
13
14 private void test1()
17 public static void main(string args)
21 }
總結:輸出是9的原因:因為內部類持有乙個外部類的引用,格式:外部類名.this
可以呼叫private方法原因是:因為他們在乙個類outer中所以可以呼叫
3、外部類和內部類中的方法相互訪問:
①外部類的靜態方法test和非靜態內部類的非靜態方法voice的相互訪問:
! test----->voice 先new外類再new內類,再調方法
1 public class outerclass輸出:voice(); !! voice----->test 外類.this.方法(持有的外部類的引用)6 }
7 public static void test()
10 public static void main(string args)
14 }
1 public class outerclass輸出:test();6 }
7 public static void test()
10 public static void main(string args)
14 }
②外部類的非靜態方法test和靜態內部類中的非靜態方法voice之間的相互呼叫
! voice------>test
1 public class outerclass輸出:test();6 }
7 public void test()
10 public static void main(string args)
13 }
!! test----->voice
1 public class outerclass輸出:voice();6 }
7 public void test()
10 public static void main(string args)
13 }
4、總結:
外部類訪問內部類:必須建立內部類的物件
內部類訪問外部類:內部類可以直接訪問外部類的成員包括私有成員,因為外部類持有內部類的引用
特例:內部類寫在外部類的方法中(即區域性變數的位置)
1、內部來外部類均可定義變數/常量
2、只能被final/abstract修飾
3、只能訪問被final/abstract修飾的變數
4、可以直接訪問外部類中的成員,因為還持有外部類的引用
參考原文:
內部類和外部類之間互相訪問
內部類與外部類之間的成員互相訪問 內部類可以訪問外部類的任何成員,包括private成員。外部類訪問內部類的成員需要建立內部類的物件,之後可以訪問內部類的任何成員,包括private成員,需要注意的是成員內部類不可以有靜態成員。當外部類的成員和內部類的成員重名時單單用this是區分不了的。在內部類中...
內部類 和外部類之間的訪問關係
外部類和內部類的訪問 1成員內部類可以無條件訪問外部類的所有成員屬性和成員方法 包括private成員和靜態成員 2.外部類訪問內部類 首先,要有內部類的物件 但是內部類是依附於外部類存在的 所以,先要建立外部類的物件。方式如下 內部類之間的訪問 非靜態內部類呼叫非靜態內部類 直接呼叫new類 非靜...
內部類與外部類
在乙個類體之內在定義乙個類 該情況下外面的類稱為 外部類 裡面類稱為 內部類 內部類內部類可以很方便訪問外部類的私有成員屬性,外部類可以通過內部類物件來訪問內部類的私有成員屬性。內部類物件例項化語法格式 外部類.內部類 物件名 new 外部類物件.new內部類構造方法 分為靜態內部類和非靜態內部類 ...