JAVA-初步认识-第十章-多态-转型

一.

对整个流程进行一个梳理,主函数中开始是创建对象,通过对象来调用它的各种方法。后来,有了多态的概念,就改变了程序的写法。

开始的书写是双杠斜线省去的那部分,后面的那部分是多态的写法,dos的编译运行的结果如下,

由于是animal来运行,那么肯定没有子类的抓老鼠的功能。有的人说,非要抓老鼠,那么该怎么办?

以前有这么一句话,byte b=3;int x=b;这里的b是自动从byte自动提升为int类型。

在这里Animal a=new Cat();引用上也是一样。Animal是爹,Cat是儿子,只有子父类出现了这种关系,才有了多态出现的可能。

这就是我们说的,继承类与类之间产生关系,给多态提供了前提。因此,这里是自动类型提升。

猫一旦上升到动物,那么我们只能按照操作动物的方式来操作它,不能按照猫的形式来。比如说,让动物去捉老鼠就是行不通的。猫一提升为动物,它的操作就带来了局限性,就不能使用猫这个子类中的特有功能了。

 为什么会这样呢?因为我们的出发点就不是从子类来考虑的,而是从动物来看的,让所有的物种都去吃饭,当然是采用多态比较合适。

 

上面截图中书写了强制类型转换,和之前的基本数据类型的转换非常相似,编程Cat类型后,要重新命名。

向上是限制,不需要你知道其他的功能,只要知道有吃这个功能就行。

有的人还进行了另一种情况,书写如下:

动物类真的创建了一个动物对象,接着对动物类型的a进行了强制转换。这是错误的。

和之前正确的相比,这个书写在于animal类真的创建了一个animal的对象。然后,让动物强制变成猫,让它去做猫的操作,这是不对的。

刚才是将猫提升为动物,然后又变为猫,这是对的。

还有另一种的操作也是错误,如下:

classCastException类型转换异常。两者之间不具备继承关系,这么转换会出事。也不能把父类对象直接转换过来,能够转换的,其实还是它自己。

向上转型,限定使用,为了提高扩展性,统一操作动物。向下转型,是为了使用子类的特有功能。向上转型,是父类一接受,自动做完的。向下转型,动物变成猫,要指定一种类型,子类有很多种。

转型是有目的的。

原文地址:https://www.cnblogs.com/wsw-bk/p/7826975.html