引用数据类型的强制类型转换、接口关系下的多态
来源:互联网 发布:截图文字识别软件 编辑:程序博客网 时间:2024/05/06 04:51
一、引用数据类型的强制类型转换:
1、存在这样一个问题:目前多态情况下不能访问子类特有的成员。
解决方法:如果需要访问子类特有的成员,那么需要进行类型强制转换.
2、基本数据类型的转换
1)小数据类型——–>大的数据类型 自动类型转换
2)大数据类型——–>小的数据类型 强制类型转换
格式:小数据类型 变量名 = (小数据类型)大数据类型;
3、引用数据类型的转换
1)小数据类型———>大数据类型 自动类型转换。
2)大数据类型———>小数据类型 强制类型转换
4、需求:定义一个函数可以接收任意类型的动物对象,在函数内部要调用到动物特有的方法。
1)代码:
//动物类abstract class Animal{ String name; public Animal(String name){ this.name = name; } public abstract void run();}//老鼠class Mouse extends Animal{ public Mouse(String name){ super(name); } public void run(){ System.out.println(name+"四条腿慢慢的走!"); } //老鼠特有方法---打洞 public void dig(){ System.out.println("老鼠在打洞.."); }}//鱼class Fish extends Animal{ public Fish(String name){ super(name); } public void run(){ System.out.println(name+"摇摇尾巴游啊游 !"); } //吹泡泡 public void bubble(){ System.out.println(name+"吹泡泡...!"); }}class Demo1{ public static void main(String[] args) { Mouse m = new Mouse("米老鼠"); Fish f = new Fish("草鱼"); print(f); } public static void print(Animal a){ //参数等价于Animal a = new Mouse("米老鼠"); if(a instanceof Fish){ Fish f = (Fish)a; f.bubble(); }else if(a instanceof Mouse){ Mouse m = (Mouse)a; m.dig(); } }}
2)分析:
5、类型转换最常见的异常: java.lang.ClassCastException。 强制类型转换失败。
二、接口关系下的多态:
1、多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类的对象。
2、实现关系下的多态:
格式:接口 变量 = new 接口实现类的对象。
3、接口实现多态与继承多态的区别:
1)接口的方法全部都是非静态的方法。而非静态的方法,只能通过实例化对象(即只能实例化实现类对象),再来调用方法。而不能接口直接调用。所以接口的多态不存在继承多态的状况(即有时结果为父类的成员、有时为子类的成员)。
2)除了这一点其它的均可参照继承的多态来使用接口实现的多态。
0 0
- 引用数据类型的强制类型转换、接口关系下的多态
- 数据类型转换:强制类型转换的运用
- 引用类型的强制类型转换
- java引用类型的强制类型转换
- java引用类型的强制类型转换
- 引用类型变量的强制转换
- 引用变量的强制转换类型
- 引用变量的强制类型转换:
- 引用变量的强制类型转换_instanceof
- 数据类型的强制转换
- 对于引用类型和强制类型转换的理解
- 强制的类型转换
- 强制类型的转换
- 5.7.2 引用变量的强制类型转换
- 强制数据类型转换的总结
- C__数据类型的强制转换
- Java数据类型的强制转换
- Android Context与接口的强制类型转换问题
- synchronized和volatile的区别
- HDU1020
- Edraw Max
- PCB板布线中地线和电源线的布线规则
- asp.net第二天
- 引用数据类型的强制类型转换、接口关系下的多态
- Navigation View的使用详解
- leetcode(10) - Regular Expression Matching 正则表达式匹配
- c多个源码文件的管理
- UVA 12169 Disgruntled Judge (扩展欧几里得)
- BrowserSync
- [12] DevOps 自动化运维工具Chef----如何在Window机器上用pgadmin打开数据库?
- [leetcode] 414. Third Maximum Number 解题报告
- 设置Textview的Drawableleft、Drawableright 等图片与文字间距、位置和大小的方法