【Java语法】多态性之方法重载(Overload)

摘要Java中存在两种多态:重载(Overload)和重写(Override)。其中,重写是与继承有关的多态。方法重载是两种多态的一种,例如,你让一个人执行“求面积”操作时,他可能会问题你求什么面积。所谓多态性,是指可以向功能传递不同的消息,一边让对象根据相应的消息来产生相应的行为。对象的行为通过类中的方法来实现,那么行为的多态性就是方法的重载。

说明丨本文来源网络或教材丨供学习交流用丨侵删

1、方法重载的语法规则

方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。两个方法的参数不同是指满足下列之一:

  • 参数个数不同
  • 参数个数相同,但参数列表中的某个参数的类型不同。

例子】下面的例子中People类中的hello方法是重载方法。

class People {
  float hello (int a, int b){
    return a+b;
  }
  float hello (long a, int b){
    return a-b;
  }
  double hello (double a, int b){
    return a*b;
  }
}

public class Example {
  public static void main (String args []){
    People tom = new People();
    System.out.println(tom.hello(10,20));
    System.out.println(tom.hello(10L,20));
    System.out.println(tom.hello(10.0,20));
    
  }
}

结果】上述例子运行结果如下所示:

30.0
-10.0
200.0

注:方法的返回类型和参数的名字不参与比较,也就是说,如果两个方法的名字相同,即使返回类型不同,也必须保证参数不同。

2、避免重载出现歧义

重载方法之间必须保证相互的参数不同,但需要小心的是,重载方法在被调用时可能出现歧义调用。例如,下面的Dog类中的cry方法就是容易引发歧义的重载方法(Dog类没有语法错误):

class Dog {
  static void cry (double m, int n){
    System.out.println("小狗")}
  static void cry (int m, double n){
    System.out.println("small dog");
  }
}

情况1】对于上述Dog类,若调用Dog.cry(10.0, 10); 则输出的信息是“小狗”。
情况2】若调用Dog.cry(10, 10.0); 则输出的i信息是“small dog”。
情况3】若调用Dog.cry(10, 10); 则无法通过编译(提示信息:对cry的引用不正确),因为Dog.cry(10, 10); 不清楚应当执行重载方法中的哪一个(出现歧义调用)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值