Java学习之多态与动态绑定

1. 多态

  • 一个对象变量可以指示多种实际类型的现象被称为多态

  • 在Java程序设计语言中,对象变量是多态的。如一个超类变量既可以用引用超类对象,也可以引用一个超类的任何一个子类的对象。

注意:

  • 不能将一个超类的引用赋给子变量。
  • 在Java中,子类数组的引用可以转换为超类数组的引用,而不需要采用强制类型转换,但需要注意的是所有数组都要牢记创建它们的元素类型,并负责监督仅将类型兼容的引用存储到数组中。

2.动态捆绑

在运行时能够自动地选择调用哪个方法的现象称为动态绑定

下面是动态绑定调用过程详细描述:

  1. 编译器查看对象的声明类型和方法名。
  2. 接下来,编译器将查看调用方法是提供的参数类型(重载解析),至此,编译器已获得需要调用的方法名和参数类型。
  3. 然后查看修饰符,如果是private方法、static方法、final方法或者构造器,那么编译器将可以准确的知道调用哪个方法,我们将这种调用方式称为静态绑定
  4. 最后虚拟机通过查找方法表(列出了所有方法的签名和实际调用方法)寻找对应的方法。
小概念:
  • 方法的名字和参数列表称为方法的签名。
  • 返回类型不是签名的一部分,在覆盖方法时,一定要保证返回类型的兼容性。允许子类将覆方法的返回类型定义为原返回类型的子类型。
  • final类和方法:
    • 不允许扩展的类被称为final类。
    • 对于final域来说,构造对象之后就不允许改变它们的值了。
    • 如果将一个类声明为final,只有其中的方法自动地成为final,而不包括域。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,231评论 0 5
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 一、继承 当两个事物之间存在一定的所属关系,即就像孩子从父母那里得到遗传基因一样,当然,java要遗传的更完美,这...
    玉圣阅读 1,077评论 0 2
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,149评论 0 62
  • 姓名:刘小琼 公司:宁波大发化纤有限公司 宁波盛和塾《六项精进》第235期学员 【日精进打卡第116天】 知~学习...
    刘小琼123阅读 111评论 0 0