• 接口的定义和调用


    接口的灵活性就在于“规定一个类必须做什么,而不管你如何做”。我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。

     1 //定义接口InterA
     2 interface InterA
     3 {
     4  void fun();
     5 }
     6 //实现接口InterA的类B
     7 class B implements InterA
     8 {
     9  public void fun()
    10  {
    11   System.out.println(“This is B”);
    12  }
    13 }
    14 
    15 //实现接口InterA的类C
    16 class C implements InterA
    17 {
    18  public void fun()
    19  {
    20   System.out.println(“This is C”);
    21  }
    22 }
    23 
    24 class Test
    25 {
    26  public static void main(String[] args)
    27  {
    28   InterA a;
    29   a= new B();
    30   a.fun();
    31   a = new C();
    32   a.fun();
    33  }
    34 }
    View Code

    输出结果为:

    This is B
    This is C

      上例中类B和类C是实现接口InterA的两个类,分别实现了接口的方法fun(),通过将类B和类C的实例赋给接口引用a而实现了方法在运行时的动态绑定,充分利用了“一个接口,多个方法”展示了Java的动态多态性。

      需要注意的一点是:Java在利用接口变量调用其实现类的对象的方法时,该方法必须已经在接口中被声明,而且在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配。

      结束语

      以上就是java运行时多态性的实现方法,大家在编程过程中可以灵活运用,但是在性能要求较高的代码中不提倡运用运行时多态,毕竟Java的运行时动态方法调用较之普通的方法调用的系统开销是比较大的。

  • 相关阅读:
    学习python第二天数据库day1
    学习python第一天总纲
    Mac 键盘快捷键
    报错 Filtered offsite request
    mysql 顺序问题
    implode 把数组 组成一个字符串
    TP view中跳转到某个控制器
    生成商品的唯一货号
    数组排序
    判断文件是否存在 删除文件
  • 原文地址:https://www.cnblogs.com/luozihua/p/7218335.html
Copyright © 2020-2023  润新知