Java基础-多态

一、实质(比较官方的回答)

多态是指:当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而这一切对于系统A而言是透明的。

二、举例理解

父类:动物类;子类:猫类和狗类;父类的方法cries()被两个子类重写。

现在有一个功能要实现发出某种动物的叫声,动物有很多种,我们只需要要这样写:

public void animalCries(动物 a){
  a.cries()
}

在需要动物发声的时候直接调用:

动物 a=new 猫();
animalCries(a);

动物 b=new 狗();
animalCries(b);

就能不用改动原始代码。编译时变量a就被认定为代码中所声明的动物对象,程序在执行的过程中会看动物a这个变量引用的到底是猫对象还是狗对象。动态绑定。

一些需要知道的知识点

1.向上转型:声明的变量类型是父类,变量引用的对象是子类。(看上去是爸爸,仔细一看是儿子)
2.对于引用对象而言,Java编译器会按照它声明时的类型来能处理,运行时Java虚拟机会按照它实际引用的对象来处理。
3.在运行环境中,引用类型里的方法和成员变量的绑定是有规则的:

  • 动态绑定:实例方法的绑定(实际看变量引用的对象的类型)
  • 静态绑定:静态方法和成员变量(实际看变量声明时的类型)

你可能感兴趣的:(Java基础-多态)