Java 重载和重写

目录

一、重写(覆写/重写/覆盖)

重写的规则

关于重写的注意事项

二、重载

重载规则:

重载(Overload)和重写(Override)的区别 


一、重写(覆写/重写/覆盖)

就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法。

子类实现父类的同名方法 , 并且参数的类型和个数完全相同 , 这种情况称为 覆写 / 重写 / 覆盖.

重写的规则

  1. 方法同名
  2. 参数类型和个数相同
  3. 返回类型相同

关于重写的注意事项

  1.  普通方法可以重写, static 修饰的静态方法不能重写.
  2.  重写中子类的方法的访问权限不能低于父类的方法访问权限.
  3.  重写的方法返回值类型不一定和父类的方法相同(但是建议最好写成相同, 特殊情况除外).

 子类访问权限要大于父类

// Animal.java 
public class Animal { 
   public void eat(String food) { 
 ... 
 } 
} 
// Bird.java 
public class Bird extends Animal { 
 // 将子类的 eat 改成 private 
     private void eat(String food) { 
 ... 
 } 
} 
// 编译出错
Error:(8, 10) java: com.bit.Bird中的eat(java.lang.String)无法覆盖com.bit.Animal中的
eat(java.lang.String) 
 正在尝试分配更低的访问权限; 以前为public

 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发 现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写.提高了写代码的效率.

我们推荐在代码中进行重写方法时 显式加上 @Override 注解 .
// Bird.java 
public class Bird extends Animal { 
 @Override 
 private void eat(String food) { 
 ... 
 } 
}

二、重载

同一个方法名字,提供不同版本的实现,称为方法重载   补充:构造方法也可以重载 

重载规则:

  1. 方法名相同
  2. 参数类型不同、参数个数不同甚至是参数顺序不同
  3. 返回值不作要求
  4. 必须在同一个类中

class Test{
    public static void main(String[] args) {
        int a=10;
        int b=20;
        int i=add(a,b);
        System.out.println(i);

        double a2=10.5;
        double b2=12.5;
        double i2=add(a2,b2);
        System.out.println(i2);
    }

    public static int add(int x,int y){
        return x+y;
    }

    public static double add(double x,double y){
        return x+y;
    }
}

//结果
30
23

 如代码中一样,通过传入的参数类型不同,确定调用哪种的重载方法。

重载(Overload)和重写(Override)的区别 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值