本帖最后由 sangyuan 于 2015-8-19 12:01 编辑
之前回复过类似的帖子,给你附上个代码,你一看应该就明白有什么好处了。- /*
- 所有父类或者父接口出现的地方,完全可以用子类对象替代。
- */
- interface Animal
- {
- public abstract void eat();
- }
- //方式一:普通的方法,创建一个Dog类来实现接口Animal的show方法,然后在下面测试类中,再创建一个对象来调用这个方法
- /*
- class Dog implements Animal
- {
- public void eat()
- {
- System.out.println("eat dog");
- }
- }
- */
- class Test
- {
- //一个方法的形式参数是接口(抽象类)
- public void show(Animal a) //Animal a = new Dog();
- {
- a.eat();
- }
- }
- class AnimalTest
- {
- public static void main(String[] args)
- {
- Test t = new Test();
- //Dog d = new Dog();
- //t.show(d);
-
- //方法二:使用匿名内部类,这样就不用再创建类,也不用再测试类中创建对象,需要注意的是,在这儿,匿名内部类是作为show方法里的参数进行传递的。
- t.show(new Animal(){
- public void eat()
- {
- System.out.println("eat dog");
- }
- });
- }
- }
复制代码
|