java中多态,你了解多少

什么是多态?

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式或(父子类方法重写父类引用指向子类对象,调用父类引用重写方法)即为多态。用白话来说,就是一个父类引用,赋值不同的子类对象,调用重写方法,得到不同的结果。总结如下:

多态的3个表现形式

  1. 接口和实现类

不同实现对象赋值给接口引用,调用同一个方法,表现不同的行为

  1. 父子类方法重写(含抽象类和其子类)

不同子类对象赋值给父类引用,调用同一个重写方法,表现不同的行为

多态一般讲的方法,当然也可以是对象属性

多态的语法格式

父类类名 引用名称 = new 子类类名();

引用名称.方法/属性名;

当是多态时,该引用名称只能访问父类中的属性和方法,但是访问的时候,会优先访问子类重写的方法即有子类重写则使用子类重写的方法

满足多态的条件

  1. 子类必须继承父类(包含接口和接口实现类)
  2. 子类必须重写父类的方法
  3. 父类引用指向子类对象即父类类名 引用名称 = new 子类类名();(含接口实现)

使用多态好处

  1. 使用多态可以使代码之间的耦合度降低
  2. 减少冗余代码的同时,也使得项目的扩展能力更强

注:耦合度指的是代码(程序)之间的关联程度

多态中的类型转换

Java多态中,有两种类型转换:向上转型和向下转型

  1. 向上转型

也叫做自动类型转换,子类型赋值给父类型(父类型的引用指向子类型),构成多态

父类类型 引用名称 = new 子类类名();

当使用多态方式调用方法时,该引用名称只能访问父类中的属性和方法。编译器首先检查父类中是否有该方法,如果没有,则编译错误。如果有,再去调用子类的同名(重写)方法。如果子类没有重写方法就调用父类自己的方法。

 

  1. 向下转型

也叫做强制类型转换,父类型赋值给子类型

当使用多态时,并且访问子类独有的属性或方法时,则必须进行向下转型

当进行向下转型时,建议先使用 instance of 关键字进行判断,判断合法时,则在转为对应的类型,否则可能会出现类型转换异常 java.lang.ClassCastException。

 

说明:instance of 关键字用于判断一个对象,是否属于某个自己类、其子类或其父类的实例。

java中多态,你了解多少

java中多态,你了解多少

  以上例子测试多态向上、向下转型以及instanceof的使用

 

免费学习java就加这个qq:2444874641