接口形式实例化-匿名内部类

来源:互联网 发布:win10软件模糊 编辑:程序博客网 时间:2024/06/06 02:20

接口形式实例化-匿名内部类

看个例子

```javapublic Interface IFly {    void fly();}public class Bird {    public Bird() {    }    public void fly(Ifly f) {        f.fly();    }}public class Test {    public static void main(String[] args) {        Bird bird = new Bird();        bird.fly(new Ilfy() {            void fly() {                System.out.println("This is a bird, it's  flying");            }        });    }}```

分析

```javabird.fly(new IFly() {    void fly() {        System.out.println("This is a bird, it's  flying");    }});```

我们学习接口的时候,很明确的有句话接口不能被实例化,这个地方的代码看起来似乎接口IFly被实例化。
其实这段代码的过程是:实例化了一个匿名内部类,然后将这个匿名内部类向上转型为IFly类型

再给个例子就明白了

```javapublic BirdFly implements IFley {    public BirdFly() {}    void fly(){        System.out.println("This is a bird, it's  flying");    }}//............bird.fly(new BirdFly());```
原创粉丝点击