Java多态

78 阅读1分钟
  1. 定义:同一个方法可以根据发送对象的不同而采用多种不同的行为方式,一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
  2. 多态是方法的多态,属性没有多态
  3. 父类和子类要有联系,否则就会出现类型转换异常 -->ClassCastExpection
  4. 存在条件:①:继承关系②:方法需要重写③父类引用指向子类对象!

代码示例:

代码显示错误:因为 eat方法只存在与子类Student中,父类不能只能引用,只能通过强制类型转换才能引用。

而且,在代码中 子类重写了父类的run方法,所以,在Application执行的时候,都是执行子类的run方法。

对象能执行哪些方法,主要看对象左边的类型,和右边的关系不大

instanceof (类型转换) 引用类型,判断一个对象是什么类型 判断两个对象是否存在关系

如: x instanceof y :返回true就是存在关系,false就是没有关系。如果是同等级的,还会发生编译报错。

强制类型转化:

  1. 父类引用指向子类的对象
  2. 把子类转换为父类,向上转型:可能会丢失一些自己本来的方法
  3. 把父类转换为子类,向下转型:强制类型转换
  4. 方便方法的调用,减少重复的代码,更加简洁!