多态及其多态类型转换
来源:互联网 发布:怎样申请淘宝子账号 编辑:程序博客网 时间:2024/06/06 02:17
1、多态是建立在继承的基础上,有两种方式,一是引用的多态,二是方法的多态
2、细分:引用的多态仅有两种,父类指向自己或者子类。但是绝不可以子类的引用指向父类;
方法的多态存在三种,第一种是当父类引用指向自己的时候访问重写的方法是访问父类的,
第二种是父类引用指向子类的时候访问重写的方法是访问子类的,
第三种如果子类没有重写的方法,此时父类引用指向子类,虽然访问了方法,但是结果依旧是指向父类中的方法,是继承的方法。
多态要注意 的细节:
1. 多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量。
2. 多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数。
3. 多态情况下,子父类存在同名的静态的成员函数时,访问的是父类的成员函数。
4. 多态情况下,不能访问子类特有的成员。
总结:多态情况下,子父类存在同名的成员时,访问的都是父类的成员,除了在同名非静态函数时才是访问子类的。
多态中引用类型转换
1:向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。
2:向下类型转换(强制类型转换),大类型到小类型。
3:instanceof运算符,来解决引用对象的类型,避免类型转换的安全性的问题。
Dog dog=new Dog();
Animal animal=dog;//向上类型转换
Dog dog2=(Dog)animal;//向下类型转换
Cat cat=(Cat)animal;//报错,开辟的是Dog类型;编译时是Cat类型,运行时是Dog类型
进行判断,避免发生这种情况
if(animal instanceOf Cat){
Cat cat=(Cat)animal;
}else{
System.out.println("不能进行类型转换!");
}
2、细分:引用的多态仅有两种,父类指向自己或者子类。但是绝不可以子类的引用指向父类;
方法的多态存在三种,第一种是当父类引用指向自己的时候访问重写的方法是访问父类的,
第二种是父类引用指向子类的时候访问重写的方法是访问子类的,
第三种如果子类没有重写的方法,此时父类引用指向子类,虽然访问了方法,但是结果依旧是指向父类中的方法,是继承的方法。
多态要注意 的细节:
1. 多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量。
2. 多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数。
3. 多态情况下,子父类存在同名的静态的成员函数时,访问的是父类的成员函数。
4. 多态情况下,不能访问子类特有的成员。
总结:多态情况下,子父类存在同名的成员时,访问的都是父类的成员,除了在同名非静态函数时才是访问子类的。
多态中引用类型转换
1:向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。
2:向下类型转换(强制类型转换),大类型到小类型。
3:instanceof运算符,来解决引用对象的类型,避免类型转换的安全性的问题。
Dog dog=new Dog();
Animal animal=dog;//向上类型转换
Dog dog2=(Dog)animal;//向下类型转换
Cat cat=(Cat)animal;//报错,开辟的是Dog类型;编译时是Cat类型,运行时是Dog类型
进行判断,避免发生这种情况
if(animal instanceOf Cat){
Cat cat=(Cat)animal;
}else{
System.out.println("不能进行类型转换!");
}
阅读全文
0 0
- 多态及其多态类型转换
- 多态和类型转换
- 多态引用类型转换
- 多态的类型转换
- 类型及其转换
- [Swift]多态类型转换以及不确定类型
- 多态和强制转换类型总结
- Java多态对象的类型转换
- 多态中的引用类型转换
- 多态中的引用类型转换
- Java基础----类型转换与多态
- Java多态之引用类型转换
- Java多态中的引用类型转换
- 多态弊端与强制类型转换
- Java 多态中的类型转换(instanceof)
- 多态与强制类型转换
- java多态中的引用类型转换
- java数据类型及其类型转换
- win10交换Caps和Ctrl
- SQL Server 2005 (64)免费下载并配置网络
- 学习笔记TF044:TF.Contrib组件、统计分布、Layer、性能分析器tfprof
- 阿里2017年校招
- 设计模式之组合模式
- 多态及其多态类型转换
- Android fragment解析
- 安卓EventBus 两步走
- XML解析(二):SAX解析
- 【C++数据结构与算法】括号匹配算法
- 哪种情况会导致持久区jvm堆内存溢出
- 二分图的最大匹配、完美匹配和匈牙利算法
- 仿联系人的排序
- std::numeric_limits::max()编译错误