Java面向对象5--多态
2022/1/18 12:03:31
本文主要是介绍Java面向对象5--多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.多态的定义
多态是指,在子类继承父类之后,可以覆写父类中的方法,在多个子类调用覆写之后,会存在多个同名的方法。即多态指的是在调用某个类型的方法时,是基于运行时实际类型的动态调用,这就称之多态。
2.注意事项
方法名相同,参数相同,返回值不同,属于不同的方法,重写时,可以通过加@Override,防止自己重写的方法错误。
3.覆写方法
(1).覆写自己写的方法
例如:
将收入报税,每个类型的收入,所需要的缴纳的税率不同
定义普通收入
class Income { protected double income; public double getTax() { return income * 0.1; // 税率10% } }
工资收入所需缴纳的税额:
class Salary extends Income { @Override public double getTax() { if (income <= 5000) { return 0; } return (income - 5000) * 0.2; } }
对于国务院特殊津贴,全部免税
class StateCouncilSpecialAllowance extends Income { @Override public double getTax() { return 0; } }
所需要报税的计算
public double totalTax(Income... incomes) { double total = 0; for (Income income: incomes) { total = total + income.getTax(); } return total; }
主方法中则需要调用对应的类型收入方法,传值计算
public class Main { public static void main(String[] args) { // 给一个有普通收入、工资收入和享受国务院特殊津贴的小伙伴算税: Income[] incomes = new Income[] { new Income(3000), new Salary(7500), new StateCouncilSpecialAllowance(15000) }; System.out.println(totalTax(incomes)); }
(2).覆写Object方法
Object方法中有几个重要的定义的方法
1.toString():转换成字符串
2.equal():判断两个instance是否逻辑相等;
3.hashCode():计算一个instance的哈希值。
在必要的时候可以对于Object进行一个覆写
class Person { ... // 显示更有意义的字符串: @Override public String toString() { return "Person:name=" + name; } // 比较是否相等: @Override public boolean equals(Object o) { // 当且仅当o为Person类型: if (o instanceof Person) { Person p = (Person) o; // 并且name字段相同时,返回true: return this.name.equals(p.name); } return false; } // 计算hash: @Override public int hashCode() { return this.name.hashCode(); } }
4. 调用super
子类覆写方法之后,还想调用父类的方法,则需要使用super.方法名(参数);
5.final
当方法,字段名之前加入final,则子类不可以对于父类的有final字段的进行调用、继承和覆写。
当实例化对象之后,带有final字段就不可更改。有final的方法不可以重写,有final的类不可以被继承。
有final的字段,可以在构造方法中初始化final字段。
这篇关于Java面向对象5--多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南