2.27.静态方法的重载

静态方法的重载
静态方法的重载和成员方法(实例方法)一样

看例程:理解方法的重载

顺带学一个三元操作符

public class DiscountMgr {

    public static double BASE_DISCOUNT = 0.99;

    public static double VIP_DISCOUNT = 0.85;

    public static double SVIP_DISCOUNT = 0.75;

    // >> TODO 静态方法的重载也是一样的,方法签名不同即可:方法名+参数类型
    // >> TODO 判断调用哪个方法,也是根据调用时参数匹配决定的。
    public static double getDiscount() {
        return BASE_DISCOUNT;
    }

    public static double getDiscount(boolean isVIP) {
        // TODO >> 我们顺带学一个三元操作符吧。
        // TODO    三元操作符的返回类型就是冒号两边的类型,两边的类型要和等号左边的变量类型兼容
        // double abc = true ? "" : 0;

        double svipDiscount = (isVIP ? VIP_DISCOUNT : 1);
        return getDiscount() * svipDiscount;
    }

    public static double getDiscount(int svipLevel) {
        double ret = getDiscount() * VIP_DISCOUNT;
        for (int i = 0; i < svipLevel; i++) {
            ret *= SVIP_DISCOUNT;
        }
        return ret;
    }

    // 我们顺带看几个不是那么正经的getDiscount吧

    // >> TODO 返回值不算是方法签名,重载的方法可以有完全不同的返回值类型
    public static void getDiscount(String s) {
        System.out.println(s);
    }

    public static int getDiscount(int a, int b) {
        return a > b ? a : b;
    }


    public static boolean getDiscount(int a, int b, int c) {
        return a > b && b > c;
    }

    public static String getDiscount(long abc) {
        return "" + abc;
    }

    public static void main(String[] args) {
        getDiscount(1, 2);
    }

}

静态方法的重载也是一样的,方法签名不同即可:方法名+参数类型
判断调用哪个方法,也是根据调用时参数匹配决定的。

三元操作符的返回类型就是冒号两边的类型,两边的类型要和等号左边的变量类型兼容
返回值不算是方法签名,重载的方法可以有完全不同的返回值类型

发布了57 篇原创文章 · 获赞 0 · 访问量 511

猜你喜欢

转载自blog.csdn.net/weixin_45471415/article/details/104799054