zoukankan      html  css  js  c++  java
  • java中的接口回调

    【接口回调】接口回调是多态的另一种体现。接口回调是指:可以把使用某一个接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法。当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,成为接口回调。不同的类在使用同一接口时,可能具有不同的功能体现。即接口的方法体不必相同,因此接口回调可能产生不同的行为。
    例如: interface People{
    void peopleList();
    }
    class Student implements People{
    public void peopleList(){
    System.out.println("I am a student");
    }
    }
    class Teacher implements People{
    public void peopleList(){
    System.out.println("I am a teacher");
    }
    }
    public class TestMain()
    {
    public static void main(String args[])
    {
    People a; //声明接口变量
    a=new Student(); //实例化 接口变量中存放对象的引用
    a.peopleList(); //接口回调
    a=new Teacher();
    a.peopleList();
    }
    }
    【结果】
    I am a student
    I am a teacher

    Spring中的jdbcTemplate和HibernateTemplate使用的时候就用到了接口回调。

    接口回调和向上转型:
    向上转型: 例如: Shape s=new Circle();
    这里创建了一个circle对象,并把得到的引用立即赋值给Shape,通过继承,circle就是一种Shape.
    假如调用基类方法(它已在之类中被覆盖) s.draw();由于后期绑定(多态),将会正确调用circle.draw()方法。
    java中的跨类引用
    在java里面,关于跨类引用 有两条规则应该记住:
    1.如果a是类A的一个引用,那么 a可以指向类A的一个实例。或者说指向类A的一个子类。这是向上转型的情况。
    2.如果a是接口A的一个引用,那么 a必须指向实现了接口A的一个类的实例,这是接口回调的情形。
    在java中向上转型是自动进行的,但是向下转型却需要强制转换。

  • 相关阅读:
    Selenium环境搭建
    系统测试用例评审checklist
    软件测试入门
    App测试方法总结
    好东西并查集
    自己编写一个数组去掉重复元素的函数
    杭电OJ BestCoder28期1001Missing number问题(小技巧偏移法)
    介绍一个二次排序的小技巧(best coder27期1001jump jump jump)
    ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)
    一个节省空间的小技巧
  • 原文地址:https://www.cnblogs.com/fjhh/p/5370856.html
Copyright © 2011-2022 走看看