Java匿名内部类指的是没有名称的类,我们必须要覆盖抽象类或接口的方法,Java匿名内部类可以通过两种方式来定义,分别为为抽象类或者接口,分别如下:
1:以抽象类的定义方式:abstract class Person{
abstract void eat();
}
2:以interface接口的形式定义抽象类:public interface Person2{
void eat();
}
那么我们如何使用Java匿名内部类呢?请看如下示例:public class TestAnonymousInner {
public static void main(String[] args) {
Person ps = new Person() {
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("匿名内部类输出滴!");
}
};
ps.eat();
}
}
乍一看,你会惊奇了,你上面说的不是匿名内部类吗?怎么还给它起了一个“ps”的名字,然后调用eat()方法呢?其实只是写法问题,你完全可以将上方的匿名内部类改成如下这种形式,不需要用类名称“ps”调用eat()方法,代码如下:public class TestAnonymousInner {
public static void main(String[] args) {
new Person() {
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("匿名内部类输出滴!");
}
}.eat();
}
}
abstract class Person{
abstract void eat();
}
这样你是不是觉得有点眼熟?我们在java或者android开发中,经常会有一些类似Button按钮的点击事件中会用到Java匿名内部类作为监听,这也只是匿名内部类的使用场景之一,代码如下:class myPanel extends JPanel {
. . .
public MyPanel() {
//in the constructor
JButton b1 = new JButton("Hello");
b1.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// do something for button b1
}
}
);
}
}
上面的这段代码中“ActionListener”就是用到了匿名内部类了。
来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/912.html