对于调用接口中的方法的一点理解

我们众所周知,接口是不能实例化的()它的里面都是抽象方法。那么我们应该怎样来调用它里面的方法呢?

请看如下代码:

首先定义一个接口:

public interface dog {
    void run();
}

然后我们用cat类来实现这个接口:

public class cat implements dog {
    @Override
    public void run() {
        System.out.println("我会跑步");
    }
}

然后写一个测试方法:

public class demo1 {
    public static void main(String[] args) {
         new dog() {
            @Override
            public void run() {
                System.out.println("我会跑步");
            }
        }.run();

        dog dog = new cat();
        dog.run();
        cat cat = new cat();
        cat.run();
    }
}

测试方法的运行结果

由此可见,有三种方法可以调用接口里面的方法(当然这些方法都是被重写过的)

首先我认为只要一个类实现了这个接口并重写了它的方法的话,这个类本身new出的对象(当然也是它自身的引用)那么这个引用就可以调用被重写的方法(相当于代码中的cat.run),另外的话我们一定学过集合我们怎么使用List集合的呢?很显然是通过List list =new Arraylist()使用了List接口,运用多态,但是我也不知道这是不是多态。通过这个例子我们可以看出:只要是实现了一个接口那么我们就可以通过这个类来使用这个接口(相当于代码中的dog dog = new cat())只要new出它的对象就好。那么第三种办法就是匿名内部类了(匿名内部类是默认实现这个接口的)它的返回值也是接口类型,并且可以直接实现被重写的接口方法。那么匿名内部类在需要接口引用当做函数的参数的时候就派上用场了。

 

posted @ 2020-09-11 19:17  JOYBOY-007  阅读(461)  评论(0)    收藏  举报