美文网首页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、签名和重载

    一、先来看一段代码: 通过观察,可以发现下面的代码有几个特征 功能相似,代码的名字相近 每个方法体内均有很多的重复...

  • typescript基础(2)

    可选参数 实现签名重载签名1是重载签名2是实现签名 案例 编写好的重载 this问题 其他类型 参数展开运算符 参...

  • Java重载(Overload)时的参数匹配原则

    重载的定义 类中的方法如果有相同的方法名、不同的方法签名,那么这几个方法是可以重载的。 什么是方法签名? 方法签名...

  • 对象构造

    重载 如果多个方法或构造器有相同的方法名称、不同的参数,便使用了重载。 方法签名 方法签名:方法名+参数类型 默认...

  • TS中几种函数重载

    函数重载 函数重载,先要了解什么是函数签名:函数签名 = 函数名称+函数参数+函数参数类型+返回值类型四者合成,包...

  • 继承要点摘录

    1、方法重载:同一个类中、函数名相同、参数签名不同 2、参数签名:参数类型+参数个数+参数顺序 3、抽象类才能包含...

  • 多态

    类型 编译时多态:方法重载;在Java中方法名和参数列表称为方法的签名,子类中若有和父类签名相同的方法则会覆盖 运...

  • 1.关于重写和重载

    overload(重载)必须满足的条件:(参数列表要不同)(参数列表:方法名和参数签名(类型,个数和顺序)) ...

  • 10月18日四期C#总结

    今天老师给我们讲了is运算符、as运算符、逻辑运算符、方法重载等。而方法重载依赖于方法签名。方法的重载就是同一个类...

  • android阿里面试java基础锦集

    1.重载函数的签名(区别是否是重载函数) 方法名+参数类型+参数顺序(返回值不是) 2.finalize的工作原理...

网友评论

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

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