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()方法?
还请高人赐教。
你说的是对的,匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。
举例:
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(); } }
为什么你定义的接口中的方法eat()不是抽象的,定义在接口中的方法不应该都是抽象的吗?