问答详情
源自:10-5 Java 中的接口

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

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()方法?

还请高人赐教。

提问者:MiseryKyo 2015-02-13 00:03

个回答

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


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

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