多态

*多态:
1.意义:
  1.1)同一类型的引用,指向不同的对象时,有不同的实现
           -------行为的多态:例如:cut(),run(),step()......
  1.2)同一个对象,被造型为不同的类型时,有不同的功能
           -------对象的多态:例如:我,你,水......
2.向上造型/自动类型转换:
  2.1)超类型的引用指向派生类的对象
  2.2)能造型成为的数据类型有:超类+所实现的接口
  2.3)能点出来什么,看引用的类型
3.强制类型转换,成功的条件只有如下两种:
  3.1)引用所指向的对象,就是该类型
  3.2)引用所指向的对象,实现了改接口或继承了该类
4.强转时若不符合如上条件,则发生ClassCastException类型转换异常
   建议:强转之前先通过instanceof判断引用指向的对象是否是该类型
例:
Aoo o = new Boo()://向上造型
Boo o1 = (Boo)o;//符合条件1
Inter1 o2 = (Inter1)o;//符合条件2
Coo o3 = (Coo)o;//ClassCastException类型转换异常
if(o instanceof Coo){//false(做强转用这个语法可以保证代码的健壮性,只要强转先判断)
Coo o4 = (Coo)o;
}

interface Inter1{}
class Aoo{}
class Boo extends Aoo implements Inter1{}
class Coo extends Aoo{}

欢迎大佬指点。
原文地址:https://www.cnblogs.com/tietouwa/p/13468515.html