Java匿名内部类
1 什么是Java匿名内部类
在Java中,没有名称的类称为匿名内部类。如果您必须重写类或接口的方法,则就可以使用它。Java匿名内部类可以通过两种方式创建:
- 类(可以是抽象的或具体类)。
- 接口
2 Java匿名内部类的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java匿名内部类的例子
*/
abstract class Person{
abstract void eat();
}
class Demo{
public static void main(String args[]){
Person p=new Person(){
void eat(){
System.out.println("很好吃...");
}
};
p.eat();
}
}
输出结果为:
很好吃...
3 Java匿名内部类工作原理
Person p=new Person(){
void eat(){
System.out.println("很好吃...");
}
};
- 创建了一个类,但其名称由编译器决定,该编译器扩展了Person类并提供了eat() 方法的实现。
- 创建由Person类型的p引用变量引用的匿名类的对象。
以下是反编译的匿名内部类源码:
import java.io.PrintStream;
static class Demo$1 extends Person
{
Demo$1(){}
void eat()
{
System.out.println("很好吃...");
}
}
4 使用接口的匿名内部类的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 带接口的Java匿名内部类的例子
*/
interface Eatable{
void eat();
}
class Demo{
public static void main(String args[]){
Eatable e=new Eatable(){
public void eat(){System.out.println("很好吃的苹果...");}
};
e.eat();
}
}
输出结果为:
很好吃的苹果...
5 使用接口的匿名内部类工作原理
Eatable p=new Eatable(){
void eat(){
System.out.println("很好吃的苹果");
}
};
- 创建了一个类,但是其名称由编译器决定,该编译器实现Eatable接口并提供eat() 方法的实现。
- 创建由Eatable类型的p引用变量引用的匿名类的对象。
以下为反编译带接口的匿名内部类的源码:
import java.io.PrintStream;
static class Demo$1 implements Eatable
{
Demo$1(){}
void eat(){
System.out.println("很好吃的苹果...");
}
}
热门文章
优秀文章