接口回调:接口回调是多态的另一种体现,可以把使用某一个接口的类创建的对象的引用赋值给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口的方法,这一个过程称为对象功能的接口回调。不同的类在使用同一个接口时,可能具有不同的功能体现,即接口的方法体不必相同,因此接口回调可能产生不同的行为。代码如下
interface ShowMessage{
void showTradeMark(); //定义一个显示商标的接口
}
class TV implements ShowMessage{
public void showTradeMark(){
System.out.println("i am a tv"); //实现接口的方法,显示我是一个电视
}
}
class PC implements ShowMessage{
public void showTradeMark(){
System.out.println("i am a pc"); //实现接口的方法,显示这是一个个人电脑
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ShowMessage sm; //定义一个接口变量
sm=new TV(); //把tv对象的引用赋值给接口变量
sm.showTradeMark(); //通过这个变量来调用实现类的方法
sm=new PC();
sm.showTradeMark();
}
}
接口作为参数:当一个方法的参数是一个接口类型时,如果一个类实现了该接口,那么就可以把该类的实力的引用传递给该参数,参数可以回调类实现的接口方法
interface Show{
void show(); //定义一个接口
}
class A implements Show{
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("i like this game"); //实现接口方法
}
}
class B implements Show{
@Override
public void show() { //实现接口方法
// TODO Auto-generated method stub
System.out.println("i like NBA");
}
}
class Arguments1 {
public void f(Show s){ //定义一个方法,里面的参数是一个接口
s.show();
}
}
public class Argument{
public static void main(String[] args) {
Arguments1 a=new Arguments1();
new B();
a.f(new A()); //用实现类的对象引用传递给方法f,然后就能够回调A类实现的方法
a.f(new B());
}
}