內部類 匿名內部類

2021-08-28 05:50:47 字數 1875 閱讀 5333

把類定義在其他類的內部,這個類就叫內部類。

內部類分為:成員內部類、區域性內部類。

內部類訪問特點:

內部類可以直接訪問外部類的成員,包括私有。

外部類訪問內部類的成員,必須建立物件。

區域性內部類是定義在乙個方法或者乙個作用域裡面的類。

public class outer 

}//在區域性位置建立內部類物件,調內部類方法,來使用區域性內部類功能

inner in= new inner();

in.print();

}}

public class innerdemo 

}//輸出:區域性內部類

什麼時候使用區域性內部類:

假設inner這個類只在方法function中建立這個類物件時被使用了一次。(即只在某個方法中需要用那麼一下

當遇到這種情況時,可以在乙個方法中定義區域性類。

匿名內部類將區域性內部類的使用再深入一步。假如只建立這個類的乙個物件,就不必命名了

前提:存在乙個類(抽象類或具體類都可以)或者介面。

格式

new 類名或者介面名();//有個分號哦,這句其實是乙個物件
匿名內部類的本質

是乙個繼承了類或者實現了介面的子類匿名物件。

code v1:

//介面

inte***ce inter

//採用匿名內部類實現介面

public class outerinner

}.show(); //note!!分號 這句是乙個匿名物件 它實現了inner介面(重寫了show方法) 它是乙個實現了介面的子類匿名物件,物件調方法

}}

//測試類

public class anonymousinnerdemo

}//輸出結果:我是匿名內部類

code v2:

//採用匿名內部類實現介面   v2

public class outerinner 這一堆是子

public void show()

};//注意分號哦

i.show();

}}

引數式的匿名內部類:使用比較器排序的treeset、treemap

treemap比較器排序中用到。採用了匿名內部類重寫comparator的compare方法,也就是實現comparator介面。

inte***ce person
public class persondemo 

}

public class anonymousinnerdemo 

});}

}

inte***ce inter

class outer};}

}public class prictice

}

outer.method().show();這一句**:

outer.method():類呼叫方法,說明method是static的

.show():說明點前面有物件——>method有返回值,且返回值為乙個物件,且這個物件的型別裡面定義了show方法

內部類,匿名內部類

內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 outer.this.x 外部類訪問內部類成員,需要宣告內部類的物件。其他類訪問內部類方法 當內部類處在成員變數的位置時,就...

內部類 匿名內部類

package org.lgy.study.innerclass public class anonymoustest public static void main string args public string getname public double getprice inte ce p...

內部類 匿名內部類

在乙個類中書寫另乙個類 同級類 嚴格意義上來講只是一種書寫形式不是內部類 成員內部類 全域性內部類 區域性內部類 包含匿名內部類 在當前類同級下繼續書寫其他類,書寫語法與普通類相同,但修飾符只能使用預設 在使用時與普通類一致,只是訪問範圍只有本包下,將相當於少建立了乙個檔案 員工類 public a...