牢记:当一个方法传入一个接口类型的参数,那么这个方法在被调用的时候,必须传入一个: 实现了该接口的实现类的对象
点击查看代码
Interface Fly{
void fly();
}
// 调用useFly方法.
// 1. 直接写一个Fly接口的实现类.
实现类 实 = new 实现类(); // 自己定义的实现类
useFly(实)
// 2. 接口的引用指向实现类的对象.
Fly fly = new 实现类();
useFly(fly);
// 以上两种姿势都不太好. 接口当中最重要的一个内容就是抽象方法,所有的功能与逻辑都是写
在抽象方法当中的,「实现类要进行重写抽象方法,定义自己的逻辑.」. 焦点就放在抽象方法上就行了.至于
这个实现的类名称无所谓.
// 3. 这里要注意: new不是接口,是一个实现了Fly接口的实现类.
Fly fly = new Fly(){
@Override
public void fly(){
// 核心逻辑写在这里就行了.
}
};
useFly(fly);
// 4. 去掉了临时变量,直接将匿名内部类对象写在实参的位置.
useFly(new Fly(){
@Override
public void fly(){
// 核心逻辑写在这里就行了.
}
});
}
public static void useFly (Fly fly){
}
}
// 方法的声明/定义.
// 参数的作用: 告诉这个方法的调用者,这里需要一个Fly类型的参数.必须是这个类型的