文档章节

代码笔记2014-4-22

树叶先生
 树叶先生
发布于 2014/04/22 11:18
字数 884
阅读 44
收藏 2

今天做题时遇到一个新词:override。
一无所知,于是百google度一下~


override

      可译为覆盖、重写。它是覆盖了一个方法并且对其重写,以求达到不同的作用。

       我们在继承中可能会在子类覆盖父类中的方法(method)。

在覆盖要注意以下的几点:
1、覆盖的方法的参数列表(signature)必须要和被覆盖的方法的参数列表完全匹配,才能达到覆盖的效果;
2、覆盖的方法的
返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖

到这里,我就很奇怪了,感觉这个override和重定义(redifine)差不多啊。

于是又找到重写和重定义的区别,如下:

重写(override):

        子类中对父类中函数相同名称(可以不同参数)的重写。(有动态绑定的特性,也即如果父类指针指向了一个子类,通过该指针调用该函数时会动态调用子类重写了的方法)

        被重写的函数 访问级别可以扩大,但不能缩小。比如private的被重写为public、protected可以;但public、protected被重写为private则不可以(因为可能会通过父类的指针来访问这个虚函数)


重定义(redifining):

       子类中重新定义父类中相同名称(可以不同参数)的非虚函数(没有动态绑定的特性,即使父类指针指向了一个子类,通过该指针调用该方法时也只是父类未被重定义的方法)


概括一下好像就区别于是否虚函数:

        是虚函数——override(重写)

  是非虚函数——redifining(重定义)



又找到override和overload的区别如下:

override(重写)
1、方法名(method name)、参数(parameter or signature)、返回值(return value)相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。

overload(重载)
1、参数类型(type)、个数(numbers)、顺序(orders)至少有一个不相同。  
2、不能重载只有返回值不同的方法,即different signature!!!!
3、存在于父类和子类、同类中。


做的选择题如下:

Which of the following statements about function overloading/redefinition/overriding is TRUE?  

A

 An overloaded function can have a different return type.  (重载函数可以有不同返回类型)

B

A redefined function can have a different return type. (重定义函数可以有不同返回类型)

C

 An overrided function can have a different return type.(重写函数可以有不同返回类型)

D

 Overloaded functions can have the same parameter list. (重载函数可以有相同参数列表)

我选了B,但正确答案应该是A

重定义或重写都是在派生类中对基类中函数的代替,应该沿用基函数中的返回类型。

而重载函数调用时的区别就在于不同的参数列表。


参考资料:

(重写和重定义)http://blog.csdn.net/lvsheng_bupt/article/details/7686993

(重写和重载)http://www.blogjava.net/hobby8062/archive/2006/10/31/78227.html





























© 著作权归作者所有

上一篇: 代码笔记2014-5-6
下一篇: 代码笔记2014-5-9
树叶先生
粉丝 0
博文 4
码字总数 4660
作品 0
广州
私信 提问
caffe资源汇总(更新中)

学习需要更新,网上有一些非常不错博客,首先感谢这些博主,他们都很认真。其次是这些笔记。 1、xizero00 2、lingerlanlan 3、iamzhangzhuping 4、zhangwang 5、yhl_leo 6、在路上 7、s...

langb2014
2016/05/31
0
0
一道强力SQL题-难难难

以下是现有数据结构(数据库MYSQL) sum plat logTime 60.1 A 2014/4/10 10 B 2014/4/10 447 E 2014/4/11 911 E 2014/4/13 4 F 2014/4/22 期望得到什么样的结果呢,如 下: sum plat logTime 6......

稻草鸟人
2014/05/21
564
6
Netty服务器无限循环给客户端发送数据

主要思路: 服务器每隔两秒发送一次服务器的时间 客户端接收服务器端数据,打印出服务器的时间 服务器端代码 package netty.time.server; import io.netty.bootstrap.ServerBootstrap;impor...

秋风醉了
2014/06/22
6.6K
1
java mysql 按日期分组查询

在 MySql 中创建user表 CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) default NULL, `age` int(11) NOT NULL, `createdate` varchar(30) NOT NULL, P......

能力一般
2015/01/13
1K
3
CentOS 7安装python3笔记

CentOS 7安装python3笔记 安装 安装基础依赖包 下载源码 由于国外下载比较慢,推荐使用国内源来进行下载,这里使用sohu的源 解压 开始编译python3 等待安装完成: ![屏幕快照 2015-12-24 16....

张富贵
2015/12/24
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

Rust 的 GUI 框架生态概览

本文比较全面比较了目前主流的 Rust 的 GUI 框架的表现。其中 ++ 表示非常好,-- 表示非常差,而 o 表示处于平均水平。 参与对比的框架共有 8 个,详细的比较结果如下: Electron + Neon El...

红薯
32分钟前
4
0
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
4
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
3
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部