淺談Java中的內部類
最近在講Java中的內部類,感覺內部類實際上對於初學者用得不多,那麼內部類簡單的說,其實就是在一個類的內部定義的類。
按照定義的情況分為:成員內部類,區域性內部類,靜態內部類,匿名內部類。
成員內部類,就是定義一個當作類的成員變數的類。
區域性內部類,就是在類裡面定義一個當作區域性變數的類,通常是在方法或程式碼塊中使用。
靜態內部類,就是在類中定義一個靜態變數,而該靜態變數是一個類。
匿名內部類,通常是在建立一個介面物件,該物件是在建立物件的同時實現介面,而該介面的實現只是在此處使用一次,所以不需要定義名字,稱為匿名內部類。
請看如下程式碼:
public interface MyInter{
public void method();
}
public class Outter {
// public static int i; // 普通靜態變數
// 靜態內部類
public static class Inner3{
}
// public String name; // 普通成員變數
// 成員內部類
public class Inner1{
}
public void test() {
// String n; // 普通區域性變數
// 區域性內部類
class Inner2{
}
// 匿名內部類,在執行時會生成一個臨時的名字,類似:Outter$1.java
MyInter in = new MyInter() {
@Override
public void method() {
}
};
}
}
上面的程式碼展示了4種不同的內部類的情形。
接下來看看這4種情形的具體用法。
靜態內部類:
public class Outter {
public int o1;
public static int os1;
public void om1() {
System.out.println(Inner3.ns3);
System.out.println(new Inner3().n3);
System.out.println("om1");
}
public static void oms1() {
System.out.println("oms1");
}
// public static int i;
// 靜態內部類
public static class Inner3{
// 在靜態內部類中可以定義基本的成員和方法,以及靜態成員和方法
public int n3;
public static int ns3;
public void m3() {
System.out.println("m3");
}
public static void ms3() {
System.out.println(os1);
oms1();
System.out.println("ms3");
}
}
}
靜態內部類的使用:
public static void main(String[] args) {
Outter.Inner3 i3 = new Outter.Inner3();
i3.n3 = 3;
Outter.Inner3.ns3 = 4;
Outter.Inner3.ms3();
i3.m3();
}
可以看到靜態內部類和靜態變數使用方式差不多,直接使用類名即可。
成員內部類:
//成員內部類
public class Inner1{
public int n1;
public int o1;
public void m1(int o1) {
o1 = 1; // 區域性變數
this.o1 = 2; // 當前屬性
Outter.this.o1 = 4; // 外部屬性
om1();
System.out.println("m1");
}
}
成員內部類的使用:
public static void main(String[] args) {
// 呼叫
Outter.Inner1 i1 = new Outter().new Inner1();
i1.n1 = 3;
i1.m1(3);
}
由於是成員,所以需要先建立物件才能使用。
區域性內部類和匿名內部類:相當於區域性變數,只能在方法裡面呼叫和建立物件等,可以呼叫外部的變數和方法,外部不能呼叫它。請看如下方法:
public void test() {
// String n;
// 區域性內部類
class Inner2{
public void m2() {
o1 = 3;
}
}
Inner2 i2 = new Inner2();
i2.m2();
// 匿名內部類,在執行時會生成一個臨時的名字,類似:Outter$1.java
MyInter in = new MyInter() {
@Override
public void method() {
o1 = 3;
}
};
in.method();
}
至此,內部類簡單的使用基本就到這了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2650123/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談java內部類Java
- java中的內部類Java
- Java中的匿名內部類及內部類的二三事Java
- Java中內部類的騷操作Java
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- 淺談Java抽象類Java抽象
- Java內部類詳解--匿名內部類Java
- Java 內部類Java
- Java內部類Java
- 10-Java內部類——成員內部類、區域性內部類、匿名內部類Java
- Java中的靜態內部類詳解Java
- java內部類,為什麼需要內部類?Java
- Java內部類詳解-- 成員內部類Java
- 10、Java——內部類Java
- Java內部類詳解--區域性內部類Java
- Java 的抽象類, 介面以及內部類Java抽象
- Java類與匿名內部類Java
- 淺談Java中的HashmapJavaHashMap
- 淺談java中的反射Java反射
- Java基礎內部類4-內部類進階Java
- 淺談Java類中的變數初始化順序Java變數
- Java-InnerClass內部類Java
- Java 內部類詳解Java
- Java內部類詳解Java
- java中的內部類和自動拆裝箱Java
- java中的成員內部類,程式碼截圖Java
- Java和ABAP裡的外部類和內部類Java
- 淺談 PHP 中異常類的使用PHP
- ?你不知道的Java內部類Java
- Java 內部類使用詳解Java
- Java 內部類與閉包Java
- 淺談java中的併發控制Java
- 內部類與靜態內部類
- Java 的各種內部類、Lambda表示式Java
- Java 內部類的意義及應用Java
- Java基礎-內部類詳解Java
- Java內部類你真的會嗎?Java
- java匿名內部類:“ 儂好,世界”Java