Java的多态
来源:互联网 发布:淘宝上图片多大尺寸 编辑:程序博客网 时间:2024/05/22 06:06
多态的基础知识
1.什么是多态
Programmer pro = new English();
创建一个子类对象,赋给父类的引用变量,通过父类的引用调用方法时,如果子类重写了,调用的是子类的
子类不同,输出结果不同,多种形态
多态只和方法有关,和属性无关
Programmer pro = new English();
编译的类型 运行时的类型
2.多态的好劣
1.减少了重载方法的数量
2.符合开闭原则,即使增加子类,不需要提供额外的方法
1.继承是多态的前提
2.子类重写父类的方法
3.将子类的对象赋给父类的引用
调用重写的方法即可多态
4.多态的使用场合
1.使用父类做方法的形参,实参可以是任意的子类类型(最主要的场合)
2.使用父类做方法的返回值类型,实际返回的可以是任意子类的对象
5.你见过的多态
public boolean equals(Object obj) {}
Object做方法的形参
1.什么是多态
Programmer pro = new English();
创建一个子类对象,赋给父类的引用变量,通过父类的引用调用方法时,如果子类重写了,调用的是子类的
子类不同,输出结果不同,多种形态
多态只和方法有关,和属性无关
Programmer pro = new English();
编译的类型 运行时的类型
2.多态的好劣
1.减少了重载方法的数量
2.符合开闭原则,即使增加子类,不需要提供额外的方法
3.不能使用子类特有的方法(除非向下转型)
4.父子类具有相同的成员变量时,也只能调父类的成员变量。
3.多态的前提1.继承是多态的前提
2.子类重写父类的方法
3.将子类的对象赋给父类的引用
调用重写的方法即可多态
4.多态的使用场合
1.使用父类做方法的形参,实参可以是任意的子类类型(最主要的场合)
2.使用父类做方法的返回值类型,实际返回的可以是任意子类的对象
5.你见过的多态
public boolean equals(Object obj) {}
Object做方法的形参
实参可以任意类型
向下转型
1. Programmer pro = new Chinese(); Chinese ch = (Chinese)pro; 强制转换
2.向下转型后就可以调用子类特有的方法了
3.不是做手术,必须转换成真实子类型,否则ClassCastException:
4.向下转型之前肯定发生了向上转型 正确
5.为了避免ClassCastException,向下转型之前先判断一下instancof
pro instanceof Italian
对象 instanceof 类或者接口
6.使用instancof的前提:左边的对象和右边的类型在继承树上有上下级关系
总结:
成员方法:
编译时:要查看引用变量所属的类中是否有所调用的方法。
运行时:调用实际对象所属的类中的重写方法——动态绑定。
成员变量:
不具备多态性,只看引用变量所属的类。
参考文章:点击打开链接
阅读全文
0 0
- Java 的多态
- JAVA的多态
- java的多态
- java的多态
- Java的多态
- JAVA的多态
- Java的多态
- Java的多态
- Java的多态
- java的多态
- JAVA的多态
- Java的多态
- java的多态
- Java 的多态
- Java的多态
- java的多态
- Java的多态
- java的多态
- 上机练习题——异常处理(课堂练习2)
- solr的使用
- Log Aggregation Status TIME_OUT的缘起
- leetCode-Subarray Sum Equals K
- numpy添加维度:newaxis
- Java的多态
- nfs文件共享
- 在Eclipse中运行Web项目时显示404错误
- 程序员最核心的竞争力是什么?
- 使用yum快速搭建LAMP环境
- 实验二
- Redis简介(四)高可用分布式集群
- springmvc学习笔记(基于注解实现)
- 区间之和