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

来源:10-5 Java 中的接口

MiseryKyo

2015-02-13 00:03

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回答

  • Coda
    2015-02-13 09:19:37
    已采纳

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

    举例:


    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();
        }
    }


    Misery...

    非常感谢赐教!

    2015-02-13 12:23:35

    共 1 条回复 >

  • qq_鲁鲁_0
    2017-01-08 09:58:57

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

    毕业了的小怪...

    你说得对,但如果没有写abstract关键字,系统会自己加上啦,所以这里没写也不是错

    2017-08-08 16:16:58

    共 1 条回复 >

Java入门第二季 升级版

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

530559 学习 · 6091 问题

查看课程

相似问题