內部類:成員內部類(非靜態的)、區域性內部類、匿名內部類、靜態內部類。
員內部類:
作為外部類的成員存在,與成員變數和成員方法平級關係
宣告:public class out{
//成員變數
//成員方法
//成員內部類
訪問許可權 class in{
//成員變數
//成員方法
語法說明:
成員內部類的訪問許可權:任意的
思考如何建立成員內部類的物件?
由於成員內部類作為外部類的成員存,若想訪問類成員需要通過物件,所以成員內部類物件需要通過外部類 物件建立
語法://建立外部類物件
out o = new out();
//通過外部類找到內部類,通過外部類物件建立內部類物件
out.in i = o.new in();
如何在成員內部類中訪問外部類的成員?
i.當外部類的屬性和內部類屬性不同名時,可以直接訪問
ii.當外部類屬性與內部類屬性同時時,格式:
外部類名.this.屬性名
通過以上格式在內部類中訪問外部類的同名屬性
區域性內部類:
作為區域性成員存在,和區域性變數平級。區域性內部類的訪問許可權:只能是預設
宣告:public class outer{
//成員變數
//成員方法
//區域性內部類所在的方法
public void fun(){
//功能**
//區域性內部類
訪問許可權 class inner{
//區域性內部類的成員變數
//區域性內部類的成員方法
思考:如何建立區域性內部類物件?
直接在區域性內部類所在的方法中建立物件並呼叫方法
如何在區域性內部類中訪問外部類的屬性?
i.不同名,直接訪問
ii.同名,外部類名.this.屬性名
靜態內部類:
static關鍵字用法:修飾成員變數,成員方法,**塊
static關鍵字的第四個用法,修飾內部類(有要求的)
static修飾的內部類是靜態內部類
static只能修飾類成員
static只能修飾成員內部類
使用static修飾的成員內部類是靜態內部
1.3.1 宣告:
public class out{
訪問許可權 static class in{
匿名內部類:沒有名字的內部類前提是在靜態內部類中
原理產生原因:
由於介面和抽象類不能建立物件,若乙個介面的實現類只需要使用一次,或乙個抽象類的非抽象類只需要使用一次,可以使用匿名內部類,匿名內部類只能建立乙個物件
匿名內部類的注意事項:
匿名內部類中必須把抽象方法全部實現
匿名內部類中可以宣告獨有的屬性和方法,但是由於介面引用不能訪問實現類中獨有的屬性和方法,所以一般不在匿名內部類中宣告獨有的方法
匿名物件:若在匿名內部類中宣告了獨有的方法火屬性,可以使用匿名物件訪問,匿名物件只能使用一次
java內部類詳解
成員內部類 作為外部類的乙個成員存在,與外部類的屬性 方法並列。成員內部類中,不能定義靜態成員 成員內部類中,可以訪問外部類的所有成員 在內部類中訪問內部類自己的變數直接用變數名 在內部類中訪問內部類自己的變數也可以用this.變數名 在內部類中訪問外部類中與內部類同名的例項變數用外部類名.this...
java內部類詳解
內部類是一種類的結構擴充,讓乙個類的內部除了屬性與方法之外還可以存在有其它類的結構,並且內部類也可以定義在方法或 塊中,但是從開發的角度來講,要盡量避免使用內部類,優先考慮普通類。乙個內部類的例子 class outer public void fun public class testdemo 那...
java基礎 內部類
一 內部類 將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類,巢狀類 非static內部類可以直接訪問外部類中的成員,包括私有成員。原因 因為內部類中持有了乙個外部類的引用,引用的格式為 外部類名.this 非靜態內部類不能定義static成員 1 內部類定義在外部類的成員位置上 方法...