49 java四種內部類詳解

2021-07-11 02:45:12 字數 2138 閱讀 9812

一般來說,有4中內部類:常規內部類、靜態內部類、區域性內部類、匿名內部類。

一.常規內部類:常規內部類沒有用static修飾且定義在在外部類類體中。

1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。

2.在常規內部類中可以直接用內部類建立物件

3.**如下:

public class myouter

}public void outermethod()

public void makeinner()

/*** @param args

*/public static void main(string args)

}4.執行結果:

內部類中 string =hello!

外部類中的x =100

x is101

二.靜態內部類:與類的其他成員相似,可以用static修飾內部類,這樣的類稱為靜態內部類。靜態內部類與靜態內部方法相似,只能訪問外部類的static成員,不能直接訪問外部類的例項變數,與例項方法,只有通過物件引用才能訪問。

3.由於static內部類不具有任何對外部類例項的引用,因此static內部類中不能使用this關鍵字來訪問外部類中的例項成員,但是可以訪問外部類中的static成員。這與一般類的static方法想通

4.例項**:

package com.m.ou;

public class myouter

}/**

* @param args

*/public static void main(string args)

}4.執行結果:

x=100

y=hello!

三.區域性內部類:在方法體或語句塊(包括方法、構造方法、區域性塊或靜態初始化塊)內部定義的類成為區域性內部類。

區域性內部類不能加任何訪問修飾符,因為它只對區域性塊有效。

1.區域性內部類只在方法體中有效,就想定義的區域性變數一樣,在定義的方法體外不能建立區域性內部類的物件

2.在方法內部定義類時,應注意以下問題:

1.方法定義區域性內部類同方法定義區域性變數一樣,不能使用private、protected、public等訪問修飾說明符修飾,也不能使用static修飾,但可以使用final和   abstract修飾

2.方法中的內部類可以訪問外部類成員。對於方法的引數和區域性變數,必須有final修飾才可以訪問。

3.static方法中定義的內部類可以訪問外部類定義的static成員

3.程式**:

public class jubu

}return new myinner();}}

class main

}  4.執行結果:

outersize:5

finallocalvar this.y=4

四.匿名內部類:定義類的最終目的是建立乙個類的例項,但是如果某個類的例項只是用一次,則可以將類的定義與類的建立,放到與一起完成,或者說在定義類的同時就建立乙個類

以這種方法定義的沒有名字的類成為匿名內部類。

宣告和構造匿名內部類的一般格式如下:

new classorinte***cename()

1.匿名內部類可以繼承乙個類或實現乙個介面,這裡的classorinte***cename是匿名內部類所繼承的類名或實現的介面名。但匿名內部類不能同時實現乙個介面和繼承乙個類,也不能實現多個介面。如果實現了乙個介面,該類是object類的直接子類,匿名類繼承乙個類或實現乙個介面,不需要extends和implements關鍵字。

2.由於匿名內部類沒有名稱,所以類體中不能定義構造方法,由於不知道類名也不能使用關鍵字來建立該類的例項。實際上匿名內部類的定義、構造、和第一次使用都發生在同樣乙個地方。此外,上式是乙個表示式,返回的是乙個物件的引用,所以可以直接使用或將其複製給乙個物件變數。例:

typename obj=new name()

同樣,也可以將構造的物件作為呼叫的引數。例:

somemethod(new name());

3.程式**:

public class niming };}

/*** @param args

*/public static void main(string args)

}4.程式執行結果:

outersize=5

finallocalvar=47

java四種內部類詳解

一般來說,有4中內部類 常規內部類 靜態內部類 區域性內部類 匿名內部類。一.常規內部類 常規內部類沒有用static修飾且定義在在外部類類體中。1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。2.在常規內部類中可以直接用內部類建立物件 3.如下 public class myoute...

java四種內部類詳解

一般來說,有4中內部類 常規內部類 靜態內部類 區域性內部類 匿名內部類。一.常規內部類 常規內部類沒有用static修飾且定義在在外部類類體中。1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。2.在常規內部類中可以直接用內部類建立物件 3.如下 public class myoute...

Java四種內部類

參考 四種內部類 常規內部類 靜態內部類 區域性內部類 匿名內部類 1 常規內部類 常規內部類沒有用static修飾且定義在外部類類體中,常規內部類可以理解為類中普通的成員變數 1 常規內部類可以訪問外部類的private成員變數和方法 2 如果要訪問內部類,首先要例項化外部類outer,然後呼叫i...