JAVA:重载overload与覆盖(重写)override的区别

JAVA中的重载overload:
只要是一个类以及其父类里有的两个函数有相同的名字但是不同的参数列表(包括参数类型,参数个数,参数顺序3项中的一项或多项)。重载可以在单个类或者两个具有继承关系的类中出现。是实现类的多态性的一种重要方式。

JAVA中的覆盖override:
覆盖只会在类继承的时候才会出现,覆盖要求两个函数的名字和参数列表都完全一样。

覆盖override的注意事项:
1. 对于父类中的静态函数不可以覆盖。
2. 重写的方法不能降低父类方法的"可见度"。
3. 不能抛出新的异常或者父异常。

如下例:

class A{
   static void m1(){System.out.println("父类A的方法m1");}
   void m2(){}
//   int m2(){}//错误,不能重载m2,参数列表一样
   public void m3(int a){}
}
class B extends A{
//   void m1(){}//不能重写A的m1为非静态方法
   static void m1(){System.out.println("重写(Override)父类A的方法m1");}//重写静态方法
//   private void m3(int a){}//重写错误,不能重写A的m3,因为降低了m3的可见性

   void m2(){}//正确,重写父类A的m2,参数列表和返回值都一样
   public void m3(){}//正确,重载父类A的m3,参数列表不同
  
   void m4(){}
   void m4(int a){}//正确,重载B的m4
   void m5(double b){
        System.out.println("Double Method "+b);
        }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值