第五题(重写,重载)

很基础的一个题

谈谈override,overload,polymorphism

override->重写(=覆盖)、overload->重载、polymorphism -> 多态

override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。

重写(覆盖)的规则:

1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.

2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。

3、重写的方法的返回值必须和被重写的方法的返回一致;

4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。

6、静态方法不能被重写为非静态的方法(会编译出错)。

overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。

重载的规则:

1、在使用重载时只能通过相同的方法名、不同的参数形式实现。可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);

2、不能通过访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。

一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。

时间: 2024-10-11 06:58:55

第五题(重写,重载)的相关文章

第八题(重载,类型转换)

依然是一个重载的问题,参考第五题 第五题是关于重载中参数个数不同时的匹配问题,而这道题是重载方法中参数类型不同时的匹配问题 先看看程序的运行结果 Wrapper.java:10: 错误: 对于fun(int), 找不到合适的方法 fun(z); ^ 方法 Wrapper.fun(Long)不适用 (无法通过方法调用转换将实际参数int转换为Long) 方法 Wrapper.fun(Short)不适用 (无法通过方法调用转换将实际参数int转换为Short) 方法 Wrapper.fun(shor

code第一部分数组:第十五题 矩阵翻转(图像翻转)

code第一部分数组:第十五题 矩阵翻转(图像翻转) 首先想到,纯模拟,从外到内一圈一圈的转,但这个方法太慢.如下图,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次. 源代码 #include <iostream> #include <vector> using namespace std; //引用类型形参 void swap(int &n,int &m) { int temp=n; n=m; m=temp; } //指针类型形参 void swap1(int

C语言考试(前五题)

学院比较奇葩,大一下期让学的VB,这学期就要学C++了,然后在开学的前三个周没有课,就由老师讲三个周的C语言,每天9:30~11:30听课,除去放假和双休日,实际听课时间一共是12天*2小时,下午是14:10~5:00,上机,不过每天下午有将近三个小时的上机时间.时间那么紧迫还要考试,今天上午得知考试题是从以下十道题中出,轻松了很多.题如下: 1.计算 ,并输出其结果. 2.求出n个学生一门课程中的最高成绩.最低成绩及高于平均成绩的人数. 3.有10个100内的整数,使用选择排序法从大到小排序.

重写 重载 隐藏

覆盖与重写可以说是一样的,但与重载不同. override(重写)是指在不同作用域中,多个函数原型完全一样,而实现却不同的函数.在C++中,经常发生在类的继承中. 当基类中的某个方法是virtual或pure virtual函数时(当然访问权限必须是public或protected,因为从C++设计思想上来讲private的函数不会是virtual的,呵呵), 其子类中对该方法的重新实现就属于override.使用时,可以通过基类的指针或者引用所指向的具体对象来确定调用的是哪个方法,从而实现函数

C和指针第七章第五题

实现一个简化的printf函数,能够处理%d,%f,%s,%c等格式. /************************************************************************* > File Name: permutation.c > Created Time: 2014年06月17日 星期二 23时22分34秒 *********************************************************************

Java-集合=第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); list.add(new A

第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id. 给定一个List 如下: List list = new ArrayList(); list.add(new Account(10.00, “1234”)); list.add(new Account(15.00, “5678”)); list.add(ne

第五题

一.通过ODBC DSN建立连接 运用ODBC数据源,首先必须在控制面板的ODBC中设置数据源,然后再编写脚本和数据库源建立连接. 1.创建 ODBC DSN     通过在 Windows 的"开始"菜单打开"控制面板",您可以创建基于 DSN 的文件.双击"ODBC"图标,然后选择"系统 DSN"属性页,单击"添加",选择数据库驱动程序,然后单击"下一步".按照后面的指示配置适用于您

rhcsa考证试题分析(一天更新五题)

rhsca考试时间:2.5小时  满分300分210分及格 当时我考的是300分(虽然很简单但是我还是高兴) 第一题 破解redhat7 密码 按e 输入 rd.break 再接着 ctrl + x mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot 第二题 查看主机名 修改主机名. 第三题 修改网卡配置文件 第四题 配置yum仓库 第五题 配置selinux

萌萌哒的第五题

1100 - 萌萌哒的第五题 Time Limit:10s Memory Limit:128MByte Submissions:353Solved:76 DESCRIPTION 给出一个长度为m的字符串,请问有多少个长度为n的字符串不存在子串等于给出的字符串.为了简化问题,我们规定所有字符串只包含小写英文字母.输入数据: 包含多组输入数据(<=15),每组数据: 第一行包含两个整数n和m(1 <= n,m <= 1000) 第二行包含一个长度为m的字符串,只含有小写字母. INPUT 包

经典算法题每日演练——第二十五题 块状链表

原文:经典算法题每日演练--第二十五题 块状链表 在数据结构的世界里,我们会认识各种各样的数据结构,每一种数据结构都能解决相应领域的问题,每一种数据结构都像 是降龙十八掌中的某一掌,掌掌毙命... 当然每个数据结构,有他的优点,必然就有它的缺点,那么如何创造一种数据结构 来将某两种数据结构进行扬长避短,那就非常完美了.这样的数据结构也有很多,比如:双端队列,还有就是今天讲的 块状链表, 我们都知道 数组 具有 O(1)的查询时间,O(N)的删除,O(N)的插入... 链表 具有 O(N)的查询时