【Java】多态中继承的转型
目录
一、前言
前面我们学习了多态的概述和使用,现在我们来学习前面剩下的转型问题。
二、转型
🗡 向上转型
🗡向下转型
为什么会有转型呢,前面我们也说到了,多态中的使用前提是有父类引用指向子类对象
还有多态的缺点就是不能访问子类对象。(可以用到向下转型访问)
向上转型
🗡其实多态中的父类引用指向子类对象就是向下转型,向下转型就是子到父。
就是将子类所申请的空间赋值给父类。形式: fu f=new zi();
向下转型
🗡向下转型的出现就是为了解决多态中无法访问子类成员的问题,其实向下转型本质上
就是强转,由父到子,父类对象转化为子类对象。形式:zi z= (zi)f ;
我们看个例子:
在fu类中
zi类中
新建一个测试类
通过向上和向下转型,此时我们可以访问子类父类全部成员
🗡 其实虽然直接创建子类对象是非常方便的,但是我们多态的实现条件之一就是有
父类引用指向子类对象(接口的多态暂时不考虑)
🗡由上述结果可知,子类对象向上转型为父类对象是不需要显示转换,而父类对象转化
为子类对象时,需要显示强制类型转化。
友情提示:向下转型还有几点需要注意的地方:
🗡①必须保证父类对象是子类的一个实例,否则程序报错。
🗡②向下转型的对象可以访问父类中的成员和方法,也可以访问子类中的成员和方法。
🗡上述代码中,父类对象a引用的是子类Dog对象,而不是Cat类对象,可以将a强
制转化为Dog类型,不能a强制转化为Cat类型,因为向下转型必须确保父类对象是
子类的一个实例所以这个程序不能成功,且在运行时会出现转换异常的警告。
三、instanceof运算符
instanceof的用处
🗡由上可知,向下转型必须确包父类对象是子类的一个实例,否则程序会异常,
instanceof 就是为了确保向下转型不出现异常。instanceof运算符用来在运行时
指出对象是否是特定类的一个实例
instanceof的使用格式:
🗡对象名 instanceof 类名
🗡instanceof返回一个布尔值来指出这个对象是否是这个特定类或者使他的子类的
一个实例。返回true则是,反之则不是。
🗡所以我们在进行向下转型之前采用instanceof运算符可以避免一些问题。
- 点赞
- 收藏
- 关注作者
评论(0)