乐趣区

关于java:JAVA基础多态

多态的概念

多态次要指同一种事物体现进去的多种状态
  • 饮料: 可乐, 雪碧, 红牛, 脉动 …
  • 宠物: 猫, 狗, 小鸟 …
  • 人: 学生, 老师, 工人, 保安 …
  • 图形: 矩形, 圆形, 梯形, 三角形 …

多态的语法格局

父类类型 援用变量名 = new 子类类型 ();
如: Shape sr = new Rect();

多态的特点

  • 当父类类型的援用指向子类类型的对象时, 父类类型的援用能够间接调 用父类独有的办法
  • 当父类类型的援用指向子类类型的对象时, 父类类型的援用不能够间接调用子类独有的办法
  • 对于父子类都有的非静态方法来说, 编译阶段调用父类版本, 运行阶段调用子类重写的版本(动静绑定)
  • 对于父子类都有的静态方法来说, 编译和运行阶段都调用父类版本

援用数据类型之间的转换

  • 援用数据类型之间的转换形式有两种: 主动类型转换 和 强制类型转换
  • 主动类型转换次要指小类型向大类型的转换, 也就是子类转向父类, 也叫做向上转型
  • 强制类型转换次要指大类型向小类型的转换, 也就是父类转为子类, 也叫做向下转型或显式类型转换
  • 援用数据类型之间的转换必须产生在 父子类之间, 否则编译报错
  • 若强转的指标类型并不是该援用真正指向的数据类型时, 则编译通过, 运行阶段产生类型转换异样
  • 为了防止上述谬误的产生, 应该在强转之前进行判断, 格局如下if(援用变量 instanceof 数据类型) 判断援用变量指向的对象是否为前面的数据类型

多态的实际意义

多态的实际意义在于屏蔽不同子类的差异性, 实现通用的编程带来不同的成果

退出移动版