java中重载与覆写(重写)的区别

重载与覆写(重写)

一、重载

  • 重载的方法是在同一个类中
  • 一般需要对于要实现同一个功能,但是传入的参数不同时需要用到重载
class StuManage {
    public int getScore(){
        return 3;
    }
    public int getScore(int i){
        return i;
    }
    //错误示例:
    /*public long getScore(int i){
        return i;
    }*/
    
    /*private int getScore(int i){
        return i;
    }*/
  
		 /*public static int getScore(int i){
        return i;
    }*/
    
    /*public final int getScore(int i){
        return i;
    }*/
    
    public int getScore(Integer i){
        return i;
    }
    
    //可变参数,i实质上是数组int[]    
    public int getScore(int ... i){
        return 3;
    }

重载满足的条件
  • 方法名相同,参数类型或者个数不同

  • 方法的返回值类型或者访问权限符不同不能称之为重载,否则会报错

二、重写

  • 重写的方法位于不同类中
  • 是实现多态的一个条件
  • 是子类对父类的同名方法进行重新定义,实现新的功能
  • 一般重写时,会在重写的方法前加上注释 @Override 便于检查重写的方法是否正确
//父类
class Parent {
    Number getScore(int a) {
      return new Integer(7);
   }
}

//子类
class Son extends Parent {
    @Override   //所有的覆写方法需注明
    Number getScore(int b){
      return new Integer(8);
    }
 }
 public class RunSon{
    public static void main(String args[]){
      Son  s = new Son();
      System.out.println(s.getScore());
   }
}

重写需要满足的条件
  • 重写的方法要求方法名称,参数类型以及个数完全相同

  • 重写要求访问权限不能小于(需要大于等于)父类中的方法权限

  • 重写要求返回值类型必须与原方法相同或者能够向上转型成为父类的返回类型

  • 重写只能针对非静态、非final、非构造方法。也就是说想要被重写的方法不能设置为静态, final

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值