为了账号安全,请及时绑定邮箱和手机立即绑定

简述重写和重载的区别

标签:
Java

重写:
1.发生在子父类之间
2.子类声明了和父类完全相同的方法,同方法名,同参数列表,同返回值
3.访问权限不能被缩小
4.异常不能被扩大
重载:
1.在同一个类中定义了多个同名的方法
2.参数列表不同(参数个数不同,参数类型不同,参数顺序不同(基于参数类型不同))

  1. 和返回类型无关。

请看关于父子类的例子:

  class father
{
 public void move(){
 System.out.println("走");
 }
  }

class child extends father   //child类继承father类
{
 public void move(){        //方法重写要求参数签名必须一致,
  System.out.println("跑")  //方法重写,返回类型也必须相同,输出不同而已
 }
 public void move(String move) //方法重载,重载要求!参数!签名必须不一致,
 {
 System.out.println(move);    //重载对返回类型不做限制。
 }
}

什么是重写?


class A{
public void overWrite()
{
System.out.print("A")
}
}
public class B extends A
{
public void overWrite()
{
System.out.print("B")//输出和父类不一样
}
public static void main(String[] args)//主方法
{
A a=new B();   //重写父类的方法
a.overWrite();//重写父类的属性.
}
}

从上面可以看出:
重载和重写的区别
方法重写要求参数签名必须一致,而重载要求参数签名必须不一致。
方法重写要求返回类型必须一致,而重载对此不做限制。
方法重写只能用于子类重写父类的方法,必须有两个类子类和父类,重载可用于同一个类的所有方法。

给个小测试~
给定java代码如下所示,在A处新增下列( )方法,是对cal方法的
重载(选择两项)
public class Test{
public void cal(int x, int y, int z){
}
}
A. public int cal(int x,int y,float z){return 0;}
B. public int cal(int x,int y,int z){return 0;}
C. public void cal(int x,int z){}
D. public viod cal(int z,int y,int x){}

正确答案:AC
D. public viod cal(int z,int y,int x){}////重载要求参数签名必须不一致 ,哪怕换了位置也不行
B. public int cal(int x,int y,int z){return 0;}//重载要求参数签名必须不一致

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消