匿名內(nèi)部類
- A:作用:匿名內(nèi)部類是創(chuàng)建某個(gè)類型子類對(duì)象的快捷方式。
- B:格式:
new 父類或接口(){
//進(jìn)行方法重寫
};
代碼演示
//已經(jīng)存在的父類:
public abstract class Person{
public abstract void eat();
}
//定義并創(chuàng)建該父類的子類對(duì)象,并用多態(tài)的方式賦值給父類引用變量
Person p = new Person(){
public void eat() {
System.out.println(“我吃了”);
}
};
//調(diào)用eat方法
p.eat();
使用匿名對(duì)象的方式,將定義子類與創(chuàng)建子類對(duì)象兩個(gè)步驟由一個(gè)格式一次完成,。雖然是兩個(gè)步驟,但是兩個(gè)步驟是連在一起完成的。
匿名內(nèi)部類如果不定義變量引用,則也是匿名對(duì)象。代碼如下:
new Person(){
public void eat() {
System.out.println(“我吃了”);
}
}.eat();
package com.itheima_03;
/*
* 匿名內(nèi)部類:
* 可以把匿名內(nèi)部類看成是一個(gè)沒有名字的內(nèi)部類
* 定義在方法當(dāng)中
* 必須在定義匿名內(nèi)部類的時(shí)候創(chuàng)建他的對(duì)象
* 格式:
* new 類/接口() {
* 如果是創(chuàng)建了繼承這個(gè)類的子類對(duì)象,我們可以重寫父類的方法
* 如果是創(chuàng)建了實(shí)現(xiàn)這個(gè)接口的子類對(duì)象,我們必須要實(shí)現(xiàn)該接口的所有方法
* };
*
* 原理:而是創(chuàng)建了繼承這個(gè)類的子類對(duì)象或者是創(chuàng)建了實(shí)現(xiàn)這個(gè)接口的子類對(duì)象
*/
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();
}
}