当前位置:首页 > JAVA教程 > JAVA基础

10JAVA面向对象三大特征之多态(polymorphism)

1.概述

extends继承或implements实现,是多态性的前提
一个对象拥有多种形态就是对象的多态性

2.格式与使用

【1】父类引用指向子类对象
【2】格式:

父类名称 对象名 = new 子类名称(); 接口名称 对象名 = new 实现类名称(); //左侧父类的引用,指向了右侧子类的对象 Fu obj = new Zi(); obj.method(); //子类方法 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.多态中成员变量的使用特点

【1】和继承没有区别
【2】访问有两种方式:
A. 直接:通过对象名称访问成员变量:
等号左边是谁就优先用谁,没有则向上找(创建对象时的左边)
到处都没有时,编译报错
B.间接:通过成员方法访问成员变量 :
看方法属于谁就优先用谁,没有则向上找
子类没覆盖重写就是子
子类覆盖重写就是父
【3】编译看左边,运行还看左边

4.多态中成员方法的使用特点

【1】看new的是谁就优先用谁,没有则向上找
【2】编译看左边,运行看右边
编译看左边:左边是Fu,Fu当中没有methodZi方法,编译报错

5.多态的好处

6.对象的向上转型

【1】向上转型,就是对象的写法
【2】格式

父类名称 对象名 = new 子类名称(); 
  • 1

【3】含义:右侧创建了一个子类对象,把它当作父类来看待

TIPS:
向上转型一定是安全的:从小范围转向大范围

7.对象的向下转型

【1】向上转型的弊端:
无法调用子类原本特有的方法
【2】解决方案:用对象的向下转型【还原的动作】
【3】格式:

子类名称 对象名 = (子类名称)父类对象; 
  • 1

【4】含义:将父类对象,还原成本来的子类对象

TIPS:
【1】保证对象创建的时候是什么,向下转型才能还原成什么
【2】如果对象创建时候是另一类,向下转型成这一类就会报错(ClassCastException)

8.Instanceof

【1】如何知道父类引用的对象是什么子类
【2】格式

//会得到一个boolean值结果 //也就是判断前面的对象能不能当作后面类型的实例 对象 instanceof 类型

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!