10-Java內部類——成員內部類、區域性內部類、匿名內部類
一.內部類
把類定義在其他類的內部,這個類就叫做內部類。
- 根據內部類,定義位置的不同,又分為成員內部類和區域性內部類
- 成員內部類:內部類位於外部類的成員位置
- 區域性內部類:內部類位於外部類的成員方法內
舉例:
class A{
//成員內部類:位於外部類的成員位置
class B{
}
public void show(){
//區域性內部類,位於外部類成員方法內
class C{
}
}
}
1.成員內部類
-
成員內部類的訪問特點
-
內部類可以直接訪問外部類的成員,包括私有的。
-
外部類要訪問內部類的成員,必須建立內部類物件
-
可以在外部直接建立內部類物件,格式
-
外部類名.內部類名 物件名=new 外部類().new 內部類()
-
注意
-
類不可以私有化,但是內部類可以(經常採用的就是私有化內部類,外部間接訪問的形式,保證資料的安全性)
-
內部類可以使用static修飾,稱為靜態內部類,其只能訪問外部類的靜態成員(方便訪問資料)
-
外界直接建立靜態內部類的格式
-
Wai.Nei a=new Wai.Nei();
舉例:
public class 內部類的訪問特點 {
public static void main(String[] args) {
//可以在外部直接創內部類的物件
Outer.Inner inner1=new Outer().new Inner();
inner1.neishow();
Outer outer=new Outer();
outer.waishow();
}
}
class Outer{
int num=100;
private int a=200;
class Inner{
int b=300;
public void neishow(){
System.out.println(b);
//內部類可以發訪問外部類的成員,包括私有成員
System.out.println(num);
System.out.println(a);
waishow1();
}
public void neitest(){
System.out.println("內部類方法執行");
}
}
public void waishow(){
System.out.println("外部的show方法執行");
//外部類訪問內部類的成員,必須建立內部類的物件
Inner inner=new Inner();
//通過內部類物件,訪問內部類的成員變數
System.out.println(inner.b);
//通過內部類物件,訪問內部類的成員方法
inner.neitest();
}
private void waishow1(){
System.out.println("外部類私有方法執行");
}
}
2.區域性內部類
- 區域性內部類的訪問特點
- 可以直接訪問外部類的成員
- 可以建立內部類物件,通過物件呼叫內部類方法,來使用內部類功能
- 區域性內部類訪問區域性變數必須是final修飾
舉例:
public class 區域性內部類 {
public static void main(String[] args) {
int a=100;
int b=200;
Outer outer=new Outer();
outer.waishow(100,200);
}
}
class Outer{
private int num=20;
public void waishow(final int a,final int b){
//該區域性變數需要使用final修飾
final int num1=30;
//區域性內部類定義在成員方法內
class inner{
public void neishow(){
num=40;
System.out.println(num);
System.out.println(num1);
System.out.println(a+":"+b);
}
}
//建立內部類物件,呼叫內部類功能
inner x = new inner();
x.neishow();
}
}
3.匿名內部類
就是區域性內部類的簡化寫法。
-
前提:存在一個類或介面;格式:
new 類名或者介面名(){
重寫方法;
} ; -
本質:繼承該類或實現該介面的子類匿名物件
相關文章
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- Java內部類詳解--區域性內部類Java
- Java內部類詳解--匿名內部類Java
- Java內部類詳解-- 成員內部類Java
- 匿名內部類
- 區域性內部類
- Java之區域性匿名內部類物件Java物件
- 匿名內部類理解
- 內部類是什麼?匿名內部類又是什麼?
- Java類與匿名內部類Java
- 內部類與靜態內部類
- Java中的匿名內部類及內部類的二三事Java
- 匿名內部類的使用
- 內部類
- java內部類,為什麼需要內部類?Java
- java培訓教程:什麼是匿名內部類?怎樣建立匿名內部類?Java
- Java 內部類Java
- Java內部類Java
- 內部類與外部類
- Java基礎內部類4-內部類進階Java
- java匿名內部類:“ 儂好,世界”Java
- 內部類解說
- 泛型,內部類泛型
- 內部類,Object,字串Object字串
- 10、Java——內部類Java
- 匿名內部類中關於new Runnable ( )
- Java-InnerClass內部類Java
- java中的內部類Java
- Java 內部類詳解Java
- 閉包與內部類
- 淺談java內部類Java
- 靜態內部類 呼叫
- Java內部類詳解Java
- Java_介面回撥與匿名內部類Java
- Java 的抽象類, 介面以及內部類Java抽象
- scala_繼承、型別判斷、抽象類、匿名內部類繼承型別抽象
- Java 內部類使用詳解Java
- 物件導向之內部類物件