漫漫人生路,学点Jakarta基础-重写(覆盖)、重载
首先我们现在开始进入Jakarta的时代,由原甲骨文易主到 Eclipse基金会下,但是不想舍弃java名字,因此基金会重新投票选出了Jakarta EE(雅加达)。但是我们明白换汤汤不换药的道理,基础是不变的因此重新温习。
温习概念
override:重写(=覆盖)-->一般在子类继承父类时,为了实现不同的功能,重写父类的方法。子类重写的方法与父类对应的方法的名称、返回类型、参数一样,存在垂直的关系。
overload:重载-->同一个类中方法之间的关系,这些方法的名称相同但是参数形式不同,因此存在水平的关系。重载是根据调用的时参表和形参表、参数顺序(参数类型不同)来选择方法。简单说就是:方法重载就是类的同一种功能的多种实现方式,到底采用哪一种方式,取决于调用者给出的参数。
规则
重载的规则:
1.方法名必须一样,参数形式不同(参数的类型、个数、顺序至少有一项是不同)。
package bank; /**
* Created by zjc on 2018/3/8.
*/
public class overload
{
public float getCount(){
return 0;
}
public int getCount(int a,int b){
return a+b;
}
public float getCount(float a, float b){
return a+b;
}
public float getCount(double c,float d){
return (float)c+d;
}
private float getCount(float d,double c){
return (float)c+d;
}
public static void main(String[] args) {
overload o = new overload();
System.out.println( o.getCount(2.3f,2.4f));
}
}
↑在此规则下:方法返回类型可以不同,方法的修饰符可以不同。
其中参数类型相同时,参数顺序前后没区别,不能构成重载。

2.不能通过访问权限、返回值类型、抛出异常进行重载(在1规则不符合的情况下);
2.1如果只是返回类型不一样:不能够构成重载。

2.2如果只是控制访问修饰符不一样:不能够构成重载。

3.方法的异常类型、数目不会对重载造成影响;
重写的规则
1.重写(子类)与被重写(父类)方法的返回类型、参数、方法名称要一模一样,否则会编译出错。
/**
* Created by zjc on 2018/3/8.
*/
public class override {
public static void main(String[] args) {
//创建一只猫
Cat cat = new Cat();
cat.cry();
Dog dog = new Dog();
dog.cry();
}
}
class Animal{
int age;
String name; public void cry(){
System.out.println("我是动物,不知道怎么叫!");
}
}
//加菲猫
class Cat extends Animal{
//覆盖父类
public void cry(){
System.out.println("喵喵叫!");
}
}
//眼镜狗
class Dog extends Animal{
//覆盖父类
public void cry(){
System.out.println("旺旺叫!");
}
}
2.重写(子类)不能缩小被重写(父类)方法的访问权限(public > protected > default > private)。

父类private 子类public这样可以重写

3.重写(子类)与被重写(父类)方法的抛出的异常要一致,或者是其子类。
4.被重写(父类)方法不能为private,否则子类只能定义新方法,不能进行重写。
5.静态方法不能被重写为非静态的方法(编译出错)。
漫漫人生路,学点Jakarta基础-重写(覆盖)、重载的更多相关文章
- 漫漫人生路-学点Jakarta基础-Java8新特性 Stream/Lambda
背景 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk dat ...
- 漫漫人生路,学点Jakarta基础-Java8函数式编程
接口默认方法 Java8版本以后新增了接口的默认方法,不仅仅只能包含抽象方法,接口也可以包含若干个实例方法.在接口内定义实例方法(但是注意需要使用default关键字) 在此定义的方法并非抽象方法,而 ...
- 慢慢人生路,学点Jakarta基础-JavaDoc标记
本文对使用Maven工程构建Jenkinsjob时遇到的问题进行一下分析汇总. JavaDoc标记使用问题 一般Maven项目都有配置产生Java DOC,但是在Jenkins里面产生DOC会有一些严 ...
- 慢慢人生路,学点Jakarta基础-集合类
动态改变内存 因为数组在存储之前需要先申请一块连续的内存空间并且在编译的收就必须确定好它的空间大小,在运行时控件的大小无法再随着需求的改变而改变,极易出现越界的情况,数据少时又会造成内存空间浪费. 主 ...
- 慢慢人生路,学点Jakarta基础-深入剖析Java的接口和抽象类
在java面向对象编程的,抽象类和接口始终存在有疑问的地方,因为两者太多相似有太多不同,在刚开始学习的时候经常弄的不对,使用情景搞混,今天来总结之前学习Java中接口和抽象类的问题. 抽象类 了解:只 ...
- Java基础--重写(Overriding,覆盖)-重载(Overloading)
多态性: Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义.调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法 Java的方法重写, ...
- 重载(overload)、重写:覆盖(override)、重定义:遮蔽(redefine)、多态
同一域名空间,函数名相同,签名不同 编译期绑定确定绑定函数,也称为静态多态 重写:覆盖(override) 虚函数 子类空间,函数名相同,签名相同 重定义:遮蔽(redefine) 非虚函数,子类成员 ...
- Java基础练习3(重载和重写)
1.(多选题)给定java代码如下所示,在1处新增下列()方法,是对show()方法的重载 public class Test{ public void show(int x, int y, int ...
- JavaSE基础知识(5)—面向对象(方法的重写与重载)
一.重写 1.说明 子类对继承过来的父类的方法进行改造,这种现象称为方法的重写或覆盖或覆写(Override) 2.要求 方法签名完全一致,jdk5.0之后,允许返回类型可以是子类类型,权限修饰符可以 ...
随机推荐
- webstorm你不知道的秘密
相信你们用webstorm肯定都会用上下面介绍的Emmet插件这个可以自带的哦 Emmet语法 子代:> 兄弟:+ 父代:^ 重复:* 成组:() ID:# class:. 属性:[] 编号:$ ...
- Angular20 nginx安装,angular项目部署
1 nginx安装(Windows版本) 1.1 下载安装包 到官网下载Windows版本的nginx安装包 技巧01:下载好的压缩包解压即可,无需安装 1.2 启动nginx 进入到解压目录,点击 ...
- Mac通过brew安装reds、memcached
redis brew install php70-redis 配置文件: /usr/local/etc/php/7.0/conf.d/ext-redis.ini memcached brew inst ...
- 在Swift项目中使用OC,在OC项目中使用Swift
几天前,我开始新的App的开发了.终于有机会把swift用在实战中了,也学到了之前纯学语法时没有机会获得的知识. 这篇博文中,我就如何使用swift.OC混编做一个介绍. OC中使用Swift 首先, ...
- iOS 开发 atomic 与 nonatomic 区别
atomic : 变量默认是有该有属性的,这个属性是为了保证在多线程的情况下,编译器会自动生成一些互斥加锁的代码,避免该变量的读写不同步的问题. nonatomic : 如果该对象无需考虑多线程的 ...
- centos ELK安装
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn ELK是进行日志收集分析用的,具体工作.原理.作用自行google. ...
- zip-gzip-bzip2_压缩文件
问:为什么要压缩文件? 答:方便传输,因为压缩的文件容量会比较小 存储所使用的空间也会比较小 ---> 备份 Windows里的压缩软件:WinRAR.Zip.好压.2345 ...
- Java经典编程题50道之二十九
求一个3*3矩阵对角线元素之和. public class Example29 { public static void main(String[] args) { int[][] ...
- [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio
<<返回目录 Visual Studio vs虽然不是全宇宙唯一的IDE,但它是.net开发人员最常用的开发工具.它自带一个性能分析工具,你可以使用它来做开发,不同的vs版本在工具上会略有 ...
- Yii2框架RBAC(Role-Based Access Control)的使用
1.在项目的common/config/main.php文件的components中添加如下代码: 'authManager' => [ 'class' => 'yii\rbac ...