对多态的理解(Java版本)

教程 shanhuhai 1910℃ 0评论

多态是什么?

多态是一个概念,从字面意思理解,是指一个事物可以有不同的形态。
具体到面向对象编程中, 是指一个类的同一个方法可以有不同的实现形式,但是对外暴露同样的接口。
多态的理解

多态有什么用?

多态可以解决复杂的面向对象开发中,保持接口一致性的问题, 可以提升代码可维护性和可阅读性。

多态怎么用?

之前用PHP 讲解过一次多态,可以参考 PHP多态

今天尝试用Java的实例讲下,可以对比下有什么不同。

下么是测试代码。

public class PolymorphicMain {

    public static void main(String[] args) {
        Income[] incomes= new Income[]{
                new Income(3000),
                new Salary(7500),
                new StateCouncilSpecialAllowance(15000)
        };
        //计算三个收入类型人的总税收
        System.out.println(totalTax(incomes));
    }

    public static double totalTax(Income... incomes) {
        double total = 0;
        for (Income income: incomes) {
            total = total + income.getTax();
        }
        return  total;
    }
}

// 适用于普通收入人群
class Income {
    protected double income;

    public Income (double income) {
        this.income = income;
    }

    public double getTax() {
        return income * 0.1;
    }

}

//适用于工资收入人群
class Salary extends Income {
    public Salary(double income) {
        super(income);
    }

    @Override
    public double getTax() {
        if(income <= 5000){
            return 0;
        }
        return (income -5000) * 0.2;
    }
}

//使用特殊免税收入人群
class StateCouncilSpecialAllowance extends Income {
    public StateCouncilSpecialAllowance(double income) {
        super(income);
    }

    @Override
    public double getTax() {
        return 0;
    }
}

注意:

  1. Java代码文件名要跟标记为Public(公开类型)的类名一致,一个Java 文件中只能定义一个Public类型的类
  2. @Override 是一个注释, 可以被编译器读取, 即告诉编译器这个方法是一个重载方法,要覆盖基类的对应方法
  3. main 函数是程序的入口函数

代码说明:

  1. 代码中定义了三中收入类型的人Income普通收入人群,Salary工资收入人群,StateCouncilSpecialAllowance享受特殊权限的免税人群
  2. main 方法中,构建了一个数组,存放三个收入类型的实例对象。通过调用 totalTax 方法计算三个人的税收总和。
  3. 多态体现在: 在totalTax中,计算三个人各自税收时,我们不需要里面具体的实现细节,通过统一的 getTax 方法既可获得。
  4. 当我们后面要修改各自具体计算税收的方法时,只需要修改对应的类中的getTax方法既可,这样就提升了代码的可维护性。

转载请注明:大后端 » 对多态的理解(Java版本)

付费咨询
喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址