首先,你的明确为什么需要向上转型和向下转型:
给你举个简单的例子,一只猫在吃鱼,我们是不是也可以说成一只动物在吃鱼,这个时候其实,就是一种向上转型,这个时候引用对象就成了动物(父类),而猫具体的行为和外貌就是这只动物的成员属性,: 动物类 dongwu=new 猫类();
这就是向上转型,他是系统自发进行的. 然后可以通过对象 dongwu来访问new后面的属性.
而向下转型必须在向上转型的前提下才能够进行,也就是先有向上转型,才能够有向下转型.:比如,把猫看成动物之后,我是不是也可以把动物在还原回来看成猫,但不能够说,这只动物可以看成是狗.
刚才我们把猫看成了一只动物,通过动物来访问这只猫具有的属性.但如果我们现在不想要把这动物说成动物了,而是想要把它还原成猫来看待,这个时候就需要用到向下转型了.
猫类 mao=(猫类)dongwu;
dongwu是对象,这样就相当于还原成最开始的状态了,通过猫类对象访问该对象中的属性.
记住一个很重要的一点:使用多态的前提必须是要有,继承关系的存在,就如上面的例子来说,动物类就是猫的父类,而狗类和猫类是不具有任何关系的.你不能够把一只狗看成一只猫,或者把一只猫看成一只狗吧???
深更半夜,纯手打,望理解,望采纳,望给黑马币. |