1.重载

构造函数是一种特殊的函数,使用构造函数的目的是用来在对象实例化时初始化对象的成员变量。由于构造函数名字必须与类名一致,我们想用不同的方式实例化对象时,必须允许不同的构造方法同时存在,这就用到了重载。

重载虽然起源于构造方法,但是在普通方法中也可以使用方法的重载。方法的重载就是在同一个类中允许同时存在多个同名方法,只要这些方法的参数类型、个数、顺序不同即可。

package com.java.test;

public class ReLoad {

	//构造方法的重载
public ReLoad(int a,int b) {
System.out.println("a+b");
}
public ReLoad(int a){
System.out.println("a");
} //普通方法的重载
public static int reload(int a,int b){
return a+b;
}
public static int reload(int a){
System.out.println(a);
return a;
}
public static double reload(double a,int b){
return a+b;
}
public static double reload(int a,double b){
return a+b;
}
}

知道了方法的重载,我们很容易想到定义不定长参数来实现方法的重载。

//定义不定长参数实现方法的重载
public static int reload(int...a){
int s=0;
for(int i=0;i<a.length;i++){
s+=i;
}
return s;
}
//调用
reload(1,2,3);
reload(1,2,3,4,5);

2.重写

重写(又叫覆盖)是继承的实现方式之一,也就是说只有在子类中才会出现方法的重写。重写是指在子类中保留父类成员方法的名称不变,参数列表不变,重写成员方法的实现内容,修改成员方法的返回值类型,或更改成员方法的存储权限。

package com.java.test;

class ExtendsTest{
protected int adds(int a,int b){
int s=0;
s=a+b;
return s;
}
protected ExtendsTest doIt(){
return null;
}
}
public class tests extends ExtendsTest{
//重写成员方法的实现内容,修改成员方法的存储权限
public int adds(int a,int b){
return a;
}
//修改成员方法的返回值类型
protected tests doIt(){
return null;
}
//重构,只重写实现内容
protected int adds(int a,int b){
System.out.println("重构");
return a+b;
}
}

3.重构

重构是继承中一种特殊的重写方式,只重写子类方法中的实现内容,成员方法的名称,参数类型、个数及成员方法的返回值都保持不变。

综上,重载可以出现在任意类的任意方法中,方法的名称相同,参数的类型,个数,顺序三个中只要有一个不同即可实现方法的重载。重写和重构是发生在子类中,也就是说只有出现继承才会需要重写和重构的实现。重写可以通过修改成员方法的实现内容,修改成员方法的返回值类型或更改成员方法的存储权限实现,但是必须保证方法名和参数列表不变。而重构是一种特殊的重写方式,只可以重写实现内容,其他都不能改变。

最新文章

  1. Leetcode 笔记 113 - Path Sum II
  2. IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0)(转)
  3. JDBC相关的类介绍
  4. AngularJS的ng-click传参
  5. LoadRunner 思考时间与事务响应时间的区别与关系
  6. DDD:《实现领域驱动》拾贝(待续)
  7. hostapd源代码分析(三):管理帧的收发和处理
  8. -Xbootclasspath参数、java -jar参数运行应用时classpath的设置方法
  9. C 编程调试集
  10. UVa 10533 - Digit Primes
  11. 算法录 之 BFS和DFS
  12. 迁移 SQL Server 到 Azure SQL 实战
  13. JS设计模式(三) 数据访问对象模式
  14. ⑥bootstrap表单使用基础案例
  15. 十六进制字符串转化为十进制值strtoul函数
  16. IOS 选择会员资格
  17. 我眼里K-Means算法
  18. bootstrap引入
  19. &quot;tsc.exe&quot;已退出,代码1
  20. Python:Day44 Javascript

热门文章

  1. Beta冲刺三
  2. JDBC学习DayTwo
  3. Lavarel Route::resource
  4. sessionFactory中的openSession和getCurrentSession的一些注意事项
  5. matlab绘图与可视化
  6. maven 常用备忘录
  7. AIX下core文件的分析
  8. lvm语法
  9. html之跳转锚
  10. (原创)列主元Gauss消去法的通用程序