Java面试——重载、重写、重构的区别

一、重载

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

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

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);

二、重写

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

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){
    return a;
  }
  //修改成员方法的返回值类型
  protected tests doIt(){
    return null;
  }
  //重构,只重写实现内容
  protected int adds(int a,int b){
    System.out.println("重构");
    return a+b;
  }
}

三、重构

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

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

知己知彼、百战不殆,面试也是如此,针对于上面的面试问到的知识点我总结出了互联网公司java程序员在面试中涉及到的绝大部分架构面试题及答案做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
资料领取方式:加入粉丝群963944895,私信管理员即可

写在最后:

既然看到这里了,觉得笔者写的还不错的就点个赞,加个关注呗!点关注,不迷路,持续更新!!!

猜你喜欢

转载自blog.csdn.net/qq_42882671/article/details/88397004