-
使用的場景:
匿名内部類可以使你的代碼更加簡潔,你可以在定義一個類的同時對其進行執行個體化。它與局部類很相似,不同的是它沒有類名,如果某個局部類你隻需要用一次,那麼你就可以使用匿名内部類。
- 使用步驟
- 定義匿名内部類
- 匿名内部類的文法
- 通路作用域的局部變量、定義和通路匿名内部類成員
- 匿名内部類執行個體
- 兩種案例類型
- 實作接口的匿名類
HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde";
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};
- 匿名子類(繼承父類)
public class AnimalTest {
private final String ANIMAL = "動物";
public void accessTest() {
System.out.println("匿名内部類通路其外部類方法");
}
class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void printAnimalName() {
System.out.println(bird.name);
}
}
// 鳥類,匿名子類,繼承自Animal類,可以覆寫父類方法
Animal bird = new Animal("布谷鳥") {
@Override
public void printAnimalName() {
accessTest(); // 通路外部類成員
System.out.println(ANIMAL); // 通路外部類final修飾的變量
super.printAnimalName();
}
};
public void print() {
bird.printAnimalName();
}
public static void main(String[] args) {
AnimalTest animalTest = new AnimalTest();
animalTest.print();
}
}
運作結果: