接口形式实例化-匿名内部类
看个例子
```java
public 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");
}
});
}
}
```
分析
```java
bird.fly(new IFly() {
void fly() {
System.out.println("This is a bird, it's flying");
}
});
```
我们学习接口的时候,很明确的有句话接口不能被实例化,这个地方的代码看起来似乎接口IFly被实例化。
其实这段代码的过程是:实例化了一个匿名内部类,然后将这个匿名内部类向上转型为IFly类型。
再给个例子就明白了
```java
public BirdFly implements IFley {
public BirdFly() {}
void fly(){
System.out.println("This is a bird, it's flying");
}
}
//............
bird.fly(new BirdFly());
```