为了账号安全,请及时绑定邮箱和手机立即绑定

关于接口配合匿名内部类来使用的问题

IPlayGame i = new IPlayGame(){
    public void playGame(){
    System.out.println("用匿名内部类的方式实现接口");
    }
 };

以上的代码,可不可以理解为通过一个IPlayGame接口的引用指向一个没有名字但是通过重写playGame()方法成功实现了IPlayGame接口的匿名内部类中的一个对象?

new IPlayGame(){
    public void playGame(){
    System.out.println("用匿名内部类的方式实现接口");
    }
 }.playGame();

这一段是不是可以理解为通过一个没有名字但是通过重写playGame()方法成功实现了IPlayGame接口的匿名内部类中的一个对象直接调用playGame()方法?

还请高人赐教。

正在回答

2 回答

你说的是对的,匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。

举例:


interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}


0 回复 有任何疑惑可以回复我~
#1

MiseryKyo 提问者

非常感谢赐教!
2015-02-13 回复 有任何疑惑可以回复我~

为什么你定义的接口中的方法eat()不是抽象的,定义在接口中的方法不应该都是抽象的吗?

0 回复 有任何疑惑可以回复我~
#1

毕业了的小怪兽

你说得对,但如果没有写abstract关键字,系统会自己加上啦,所以这里没写也不是错
2017-08-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530630    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

关于接口配合匿名内部类来使用的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信