Java web

3、签名和重载

2021-03-17  本文已影响0人  爱学习的代代

一、先来看一段代码: 通过观察,可以发现下面的代码有几个特征

  1. 功能相似,代码的名字相近
  2. 每个方法体内均有很多的重复代码
//买一个商品要花费的钱
    public double buyOne() {
        int count = 1;
        if (this.count < count) {
            return  -1;
        }
        this.count--;
        return count * soldPrice;

    }

//    买好几个需要支付的钱
    public double buyCount(int count) {
        if (count > this.count) {
            return -1;
        }

        this.count -= count;
        return count * soldPrice;
    }


//    用户购买的时候是VIP
    public double byAsVIP(int count, boolean isVIP) {
        if (count > this.count) {
            return -1;
        }
        this.count -= count;
        return isVIP ? count * soldPrice * 0.95 : soldPrice * count;
    }

二、怎么解决呢?

解决办法: 方法的重载

下面重写原有的代码:

      public double buy() {
       return buy(1);
   }

   public  double buy(int count) {
       return buy(count, false);
   }

   public double buy(int count, boolean isVIP) {
       if (count > this.count) {
           return -1;
       }
       this.count -= count;
       return isVIP ? soldPrice * count * 0.95 : soldPrice * count;
   }

说明:
1、重载的方法可以调用其他重载方法或者不重载方法

重载代码编写的思路:

优先写最复杂的重载方法,通过外部传参的方式将其他的方法所需的参数传递进来进行处理。

三、 程序运行效果:

image.png

四、当重载的形参参数类型为double时,实参(非形参类型)传递的时候,会进行自动转换。

匹配顺序: byte > short > int > long > float > double

上一篇下一篇

猜你喜欢

热点阅读