方法重载(OverLoad)


方法重载(OverLoad)

基本介绍

java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致! 比如:System.out.printIn(100) out是PrintStream类型

假如没有方法重载的话, 就会出现printchar printint的打印方式 ,根据类型进行都要打印

重载的好处

1)减轻了起名的麻烦 2)减轻了记名的麻烦

 

方法重载快速入门

OverLoad01.java

案例:类:MyCalculator方法:calculate

calculate(int n1,int n2)  //两个整数的和
calculate(int n1,double n2) //一个整数和一个double的和
calculate(double n2,int n1) //一个double和一个int的和
calculate(int n1,int n2,int n3) //三个int的和

代码示例 :

public class OverLoad01 {
  public static void main(String[] args) {
      MyCalculator mc = new MyCalculator();
      System.out.println(mc.calculate(1,2));
  }


}


class MyCalculator{

  //下面的四个方法构成了重载
  //两个整数的和
  public int calculate(int n1,int n2){
      return n1 + n2;
  }
  //一个整数和一个double的和
  public double calculate(int n1,double n2){
      return n1 + n2;
  }
  //一个double和一个int的和
  public double calculate(double n1,int n2){
      return n2 + n1;
  }
  //三个int的和
  public int calculate(int n1,int n2,int n3){
      return n1 + n2 + n3;
  }


}

这里我们可以看到 ,编写了总共有4个一样名字的方法

我们将方法实例化之后 ,调用类方法的时候 ,就会自动匹配我们传参的值 ,假如为两个int类型的数值 ,那么就会默认调用第一个类方法从而求得类的和

同样的 ,假设传入的参数第一个是int 第二个是double就使用第二个方法 ,反之就是第三个方法

 

注意事项

1)方法名:必须相同 2)参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求) 3)返回类型:无要求

 

来试着判断一下

判断题:

void show(int a,char b,double c)构成重载的有:b ,c ,d ,e

a) void show(int x,char y,double z)
//a不构成重载,因为类型的位置都是一致的,只是变量名不同
b) int show(int a,double c,char b){}
//方法不同因此可以构成
c) void show(int a,double c,char b){}
//可以构成
d) boolean show(int c,char b){}
//形参个数不一致,但仍然构成
e) void show(double c){}
//方法名一致,构成
f) double show(int x,char y,double z){}
//类型一致因此不构成方法重载
g) void shows(){}
//方法名不同,不构成方法重载

 

 

方法重载代码示例

1.编写程序,类Methods中定义三个重载方法并调用。方法名为m。三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的main()方法中分别用参数区别调用三个方法。OverLoadExercise.java

2.在Methods类,定义三个重载方法maxO,第一个方法,返回两个int值中的最大值,第二个方法,返回两个double值中的最大值,第三个方法,返回三个double值中的最大值,并分别调用三个方法。

public class OverLoadExercise {
  public static void main(String[] args) {

      Methods t1 = new Methods();
      t1.m(2);
      t1.m(2,3);
      t1.m('x');

      System.out.println(t1.max(2, 4));
      System.out.println(t1.max(3.3, 2.5));
      System.out.println(t1.max(6, 4, 3));

  }
}

class Methods {
  public void m(int n) {
      System.out.println("平方为:" + (n * n));
  }

  public void m(int a, int b) {
      System.out.println("相乘结果为:" + (a * b));
  }

  public void m(char c) {
      System.out.println(c);
  }

  public int max(int n, int m) {
      return n > m ? n : m;
      //这里借助三元运算符

  }

  public double max(double n, double m) {
      return n > m ? n : m;

  }

  public double max(double n, double m, double x) {

      double max1 = n > m ? n : m;
      return max1 > x ? max1 : x;
      //这里仍然借助了三元运算符,不过添加了一个中间变量也就是max1


  }
}

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/245308.html

(0)
上一篇 2022年4月18日 06:21
下一篇 2022年4月18日 06:21

相关推荐

发表回复

登录后才能评论