美文网首页Java web
3、签名和重载

3、签名和重载

作者: 爱学习的代代 | 来源:发表于2021-03-17 08:40 被阅读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

    相关文章

      网友评论

        本文标题:3、签名和重载

        本文链接:https://www.haomeiwen.com/subject/pclscltx.html