最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Java匿名内部类的使用场景分析

Java基础 太平洋学习网 浏览 评论

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/2019/0309/912.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论