《编程导论(Java)·2.1.3改写(override)》
《编程导论(Java)·2.1.3改写(override)》,收集override内容.
方法改写(method overriding)是指对于父类定义的一个实例方法,同意子类提供自己的实现的一种语言特性。子类的实现将改写(override)或代替(replace)父类中的实现。
改写成功必须“同一时候”满足下列条件。
- 两者的方法签名全然同样。
方法签名(signature)指一个方法的名字和形參列表。a method's signature is its name and the number and the type of its arguments.。而重载方法的方法签名必须不同。本质上。签名不同的方法,是两个不同的方法。
- 返回类型必须同样或是子类。Java 5.0之前。返回类型不同将导致编译错误。Java 5.0之后,改写方法的返回类型能够是(被改写方法的返回类型的)子类。
covariant return type
- 方法改写时,訪问权限不能变得更加私有。不要求两者訪问修饰符同样,但假设父类的方法是包私有的,则改写的方法能够用包私有的、protected和public修饰。假设父类的方法是public,则改写的方法仅仅能用public修饰。
- 改写的方法,不能抛出比父类方法很多其它的检查型异常。
public interface Sup{
public void copy();
}
class Sub implements Sup{
@Override public void copy(){
System.out.println("override");
throw new NullPointerException();
}
}
编译器无论RuntimeException。
- 父类的方法不是final方法。final方法不可以被改写。
- 父类的方法不是private或static方法。否则,即使编写了签名全然同样的方法。可是它们与改写机制无关。
父类的private方法。子类不继承。因而对子类而言毫无意义,如同不存在。
父类的static方法foo(),假设可以继承。子类可以依照改写的要求如訪问权限更公有、返回值类型同样等,编写方法签名同样的静态方法。可是。前面不可以加@Override。
两者并列存在。方法隐藏:在子类中直接调用foo(),则运行自定义的静态方法。假设没有自定义的foo()——仅仅有一个继承于父类的static方法foo(),在子类中直接调用foo(),显然运行唯一的foo()。
所以。自定义的静态方法挡住了父类的方法。
在能够继承的前提下:
父类的实例方法。子类能够override一个实例方法,可是子类不得定义签名同样的static方法-编译错误。
父类的静态方法,子类能够编写隐藏性的静态方法,可是子类不得定义签名同样的实例方法-编译错误。
overriding与overloading
如同比較男生和女生。改写是执行时机制,而重载是编译时机制。仅仅有读源码时才有比較的价值,刻薄地说,仅仅有考试时才有比較的价值。
《编程导论(Java)·2.1.3改写(override)》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- scrollView的几个属性contentSize contentOffset contentInset
01- ontentSize是scrollview可以滚动的区域 比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960), 代表你的scrollvie ...
- Ubuntu nfs 配置
1. nfs server端的安装和配置 (1)安装nfs server sudo apt-get install nfs-kernel-server nfs-common (2)重启nfs serv ...
- 坚果云创业团队访谈:我们 DIY 云存储(不要过度关注竞争对手,尤其当我们还是小公司的时候)
坚果云(http://jianguoyun.com/)是一款用于多平台文件同步.备份和交换的云存储工具,立志于提供“便捷,安全”的服务.坚果云自去年年初启动内测,至今年三月初刚刚正式发布.近日我们拜访 ...
- objective-c 强大的布尔类型
objective-c codes: #import <Foundation/Foundation.h> BOOL areIntsDifferent(int thing1,int thin ...
- tlplayer,wzplayer所有平台通用加密测试视频
此视频文件为通用版本,支持tlplayer,wzplayer,能在ios,android,windows,mac等平台上使用,发布此文件紧为方便用户测试. 下载地址:http://www.coolra ...
- Android开发UI之补间动画-布局添加动画
布局添加动画 使用步骤: 1.获取到布局的id RelativeLayout ly=(RelativeLayout)findViewById(R.id.layout); 2.设置动画样式 ScaleA ...
- 对 Azure Backup 的常见配置问题进行故障排除
Giridhar Mosay云 + Enterprise 项目经理 这篇博客文章有助于解决 Microsoft云备份解决方案(即 Azure Backup)的常见配置问题.客户通常会在安装或注册 ...
- c程序设计语言_习题1-19_编写函数reverse(s)将字符串s中字符顺序颠倒过来。
Write a function reverse(s) that reverses the character string s . Use it to write a program that re ...
- 教你如何通过ICCID找回丢失的的iPhone
22日晚买了FACETIME,在某宝上买的.价格不贵,可以查到偷手机的人注册FT的号码,还可以查询手机被刷机和被维修的日期(这个很关键) 27日手机被刷机,遂买了某宝查询ICCID的服务,找到一串IC ...
- 教您Photoshop中如何快速放大、缩小、移动图像
教您Photoshop中如何快速放大.缩小.移动图像 http://jingyan.baidu.com/article/ae97a646aaeaaebbfc461d5e.html