多态
来源:互联网 发布:活动报名系统源码 编辑:程序博客网 时间:2024/06/10 00:49
多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。
子类继承父类,如果是名称相同,参数不同(重载)
子类继承父类,如果是名称相同,参数也相同(覆盖,也称方法重写)
方法覆盖出现的前提条件之一是必须有继承发生的情况下,而且要求父类和子类只能够的方法必须同原型
方法重载时,继承不是必须的,它只要求方法名称相同,而参数列表必须不同
父类的引用可以指向子类的对象
子类的引用不能指向父类的对象
父类的引用指向哪个类的实例,就可以调用哪个类的方法
同样使用父类的引用,调用同一个名称的方法,却可以得到不同的调用结果,这就是java中的多态,即:
同一函数,多种形态
静态多态:
也称编译时多态,即在编译时决定调用哪个方法;
静态多态一般是指方法重载;
只要构成了方法重载,就可以认为形成了静态多态的条件;
静态多态与是否发生继承没有必然联系
动态多态:
也称为运行时多态,即在运行时才能确定调用哪个方法;
必须要有继承的情况存在;
必须要有方法覆盖;
必须由父类的引用指向子类的实例,并且通过父类的引用调用被覆盖的方法;
继承是实现动态多态的首要前提
多态便于灵活地拓展我们开发的程序
抽象类不可以直接实例化,只可以用来继承;
抽象类中也可以包含有非抽象的方法;
构造方法和静态方法不可以修饰为abstract
接口中不能定义非抽象方法;
接口中的所有方法都默认为抽象方法,无需在每个方法前加abstract;
接口的实现类应该提供对接口中所有抽象方法的具体实现,否则将成为抽象类;
与抽象类和它的继承类相似,也可以使用接口的引用指向其实现类的对象,从而达到动态多态的效果
final修饰变量,变量成为常量,常量在声明时必须初始化;
final修饰方法,方法不能被子类覆盖;
final修饰类,该类不能被继承
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- Web应用程序状态管理
- 励志
- QT父子与QT对象delete
- 从零开始搭建Node.js, Express, Ejs, Mongodb服务器
- python学习笔记(一)
- 多态
- KEIL工程编译出现Error command-line cannot open preprocessing output output file错误
- Qt unicode字串转中文
- python学习笔记(二)
- codeforces 664B题 Rebus 题解记录了我做这道题从错到对的完整思路
- 常见数据结构(二)-树(二叉树,红黑树,B树)
- UVA 1451 Average(斜率优化)
- 第68篇Chrome扩展USB开发(四)及php及JS
- python学习笔记(三)