重载,重写以及多态
2017-12-10 21:09
190 查看
重写
override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则:
1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、重写的方法的返回值必须和被重写的方法的返回一致;
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。
重载
overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。重载的规则:
1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
重载和覆盖的区别
1. 重载要求函数名相同,但是参数列表必须不同,返回值可以相同也可以不同。覆盖要求函数名、参数列表、返回值必须相同。
2. 在类中重载是同一个类中不同成员函数之间的关系
在类中覆盖则是子类和基类之间不同成员函数之间的关系
3. 重载函数的调用是根据参数列表来决定调用哪一个函数
覆盖函数的调用是根据对象类型的不同决定调用哪一个
4. 在类中对成员函数重载是不能够实现多态
在子类中对基类虚函数的覆盖可以实现多态
多态
多态即多种形式,多态性是指一般类中定义的属性或服务被特殊类继承后,可以具有不同的数据类型或表现出不同的行为,通常是使用重载和重写两项技术来实现的。多态分为通用多态和特定多态,通用多态有包括参数多态和包含多态(覆盖),特定多态有包括过载多态(重载)和强制多态
过载多态(重载):描述一个函数名称有多种不同实现方式,通常可以在编译时机遇类型签名来区分各个重载函数的名称。代码如下
class OverLoader { public void test(int x); public void test(int x,double y); public void test(string x); }
包含多态(覆盖):是重载的一种特殊情况,只发生存在父类和子类这一类关系中。注:通常签名相同,内容不一样。
class Parent { public void test(int x); } class Child extexts Parent { public void test(int x); }
强制多态:声明为一种类型,但实际上却可以包含另一种类型数值的变量
Parent p = new Child();
参数多态(泛型):它提供一种创建通用工具的方法,可以在特定的场合将其特化。
template <class T> T max(T a,T b) { if(a<b) { return b; } else { return a; } }
相关文章推荐
- java的多态以及重载,重写,前期绑定,后期绑定
- Java基础温习 (6)重载,重写以及继承,多态的区别
- php 面向对象的三大要素(封装、继承、多态)以及重写(override)和重载(overload)的举例说明
- java中的继承和多态以及重载和重写
- C++:成员函数的重写、重载以及多态
- [Java]重载,重写以及继承,多态的区别
- 对象之间的通信,面向对象的三大特征,封装,继承,多态;以及重写,重载
- java中的继承和多态以及重载和重写
- [Java]重载,重写以及继承,多态的区别
- c#中多态的学习与使用方法以及重写(覆盖)和重载的区别
- java 重写、重载以及多态
- java的重写、重载以及继承、多态和封装
- [Java]重载,重写以及继承,多态的区别
- 我对多态的的理解以及重载和重写
- java中重载与重写的区别以及与多态的关系
- PHP面向对象编程之--多态:方法重载与重写
- Java中继承、多态、重载和重写介绍
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- JAV中一些基本概念:构造函数、方法重载、继承、方法重写、多态。
- 重载,继承,重写和多态的区别:(个人感觉讲述的很通俗易懂)