匿名內部類
- A:作用:匿名內部類是創建某個類型子類對象的快捷方式。
- B:格式:
new 父類或接口(){
//進行方法重寫
};
代碼演示
//已經存在的父類:
public abstract class Person{
public abstract void eat();
}
//定義并創建該父類的子類對象,并用多態的方式賦值給父類引用變量
Person p = new Person(){
public void eat() {
System.out.println(“我吃了”);
}
};
//調用eat方法
p.eat();
使用匿名對象的方式,將定義子類與創建子類對象兩個步驟由一個格式一次完成,。雖然是兩個步驟,但是兩個步驟是連在一起完成的。
匿名內部類如果不定義變量引用,則也是匿名對象。代碼如下:
new Person(){
public void eat() {
System.out.println(“我吃了”);
}
}.eat();
package com.itheima_03;
/*
* 匿名內部類:
* 可以把匿名內部類看成是一個沒有名字的內部類
* 定義在方法當中
* 必須在定義匿名內部類的時候創建他的對象
* 格式:
* new 類/接口() {
* 如果是創建了繼承這個類的子類對象,我們可以重寫父類的方法
* 如果是創建了實現這個接口的子類對象,我們必須要實現該接口的所有方法
* };
*
* 原理:而是創建了繼承這個類的子類對象或者是創建了實現這個接口的子類對象
*/
public class InnerDemo4 {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
}
}
interface Inner {
public void function();
}
class Outer {
public void method() {
/*
* new Inner() {
*
* @Override public void function() { System.out.println("function"); }
*
* }.function(); }
*/
Inner i = new Inner() {
@Override
public void function() {
System.out.println("function");
}
};
i.function();
i.function();
}
}