我的Java学习之路——方法重载

方法重载(Overload)
java中允许同一个类中多个同名方法的存在,但要求形参列表不一致!
比如:System.out.println();
out是PrintStream类型
简单测试
public class Main{
    public static void main(String[]args){
        System.out.println(100);
        //整数类型
        System.out.println("hello world");
        //字符串类型
        System.out.println('h');
        System.out.println(true);
        //布尔类型
        //可以输出不同的类型
    }
}
重载的好处:
减轻了起名与记名的麻烦
例如:
printlnt
printChar
printString
可见不同形参要去不同方法名,过于麻烦

 

案例:类:MyCalculator(计算),方法:calculate
calculate(int n1, int n2)//两个整数和
calculate(int n1, double n2)//一个整数,一个double和
calculate(int n1, int n2, int n3)// 三个整数和
public class Main{
    public static void main(String[]args){
        MyCalculator mc = new MyCalculator();
        System.out.println(mc.calculate(1, 2));
        System.out.println(mc.calculate(1, 2.5));
        System.out.println(mc.calculate(1, 2, 3));
    }
}
 class MyCalculator {
     public int calculate(int n1, int n2) {
         return n1 + n2;
     }
     public double calculate(int n1, double n2){
         return n1 + n2;
     }
     public int calculate(int n1, int n2, int n3){
         return n1 + n2 + n3;
     }
 }

 

编译可以通过
结论:下面四个calculate方法构成了重载
1.方法名不相同,不能构成重载
 类如:
      public int calculate(int n1, int n2) {
          return n1 + n2;
      }
      public double calculate02(int n1, double n2){
          return n1 + n2;
      }

 

2.形参列表必须不同,形参类型或个数或顺序至少有一样不同,参数名无要求
列如:
      public int calculate(int n1, int n2) {
          return n1 + n2;
      }
      public double calculate02(int n1, double n2){
          return n1 + n2;
      }
虽然方法名相同,但形参个数不一样

 

3.顺序不一样也可构成重载

      public double calculate(int n1, double n2) {
          return n1 + n2;
      }
      public double calculate02(double n1, int n2){
          return n1 + n2;
      }

 

4.参数名无要求

      public int calculate(int n1, int n2) {
          return n1 + n2;
      }
      public int calculate02(int a1, int a2){
          return n1 + n2;
      }
虽然参数名不同,但不能构成重载

 

5.返回
      public int calculate(int n1, int n2) {
          return n1 + n2;
      }
      public void calculate02(int a1, int a2){
          int res = n1 + n2;
      }
      即便返回值不同也不能构成重载,因为方法重复定义
     //练习:
     public class Main{
         /*
          编写程序,类Methods中定义三个重载方法并调用,方法名为m
          */
         public static void main(String[]args) {
             Methods methods = new Methods();
             methods.m(2);
             methods.m(2, 3);
             methods.m("java is better");
         }
     }
      class Methods {
          public void m(int n) {
              System.out.println("平方=" + (n * n));
          }
          public void m(int n1, int n2) {
              System.out.println("相乘=" + (n1 * n2));
          }
          public void m(String str) {
              System.out.println("传入的string=" + str);
          }
      }

 

//练习2:
public class Main{
    /*
     编写程序,类Methods中定义三个重载方法并调用,方法名为m
     */
    public static void main(String[]args) {
        Methods methods = new Methods();
        System.out.println(methods.m(6, 7));
        System.out.println(methods.m(3.2, 5.4));
        System.out.println(methods.m(5.1, 6.5, 3.2));
    }
}
 class Methods {
     public int m(int n1, int n2) {
         return n1 > n2 ? n1 : n2;
     }
     public double m(double n1, double n2) {
         return n1 > n2 ? n1 : n2;
     }
     public double m(double n1, double n2, double n3) {
         double max = n1 > n2 ? n1 : n2;
         return max > n3 ? max : n3;
     }
 }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值