Java抽象示例
时间:2020-02-23 14:37:04 来源:igfitidea点击:
这个例子演示了抽象在Java编程语言中的用法
什么是抽象
抽象是对用户隐藏实现细节的过程。在Java中,抽象是通过抽象类和接口来实现的。我们有一个关于Java接口的更详细的解释,如果你需要更多关于接口的信息,请先阅读本教程。
抽象是面向对象编程(OOP)背后的四个主要概念之一。OOP问题在求职面试中很常见,所以我们可能会在下一次Java面试中遇到有关抽象的问题。
Java抽象示例
为了给出一个抽象的例子,我们将创建一个名为
Employee
以及两个子类
Contractor
和
FullTimeEmployee
. 这两个子类都有共同的属性可以共享,比如员工的姓名和员工每小时的工资。承包商和全职员工之间有一个主要区别——他们为工作的时间。全职员工每天持续工作8小时,承包商的工作时间可能有所不同。
Java抽象类示例
让我们首先创建超类
Employee
. 注意 abstract关键字在类定义中的用法。这将类标记为抽象类,这意味着它不能直接实例化。我们定义了一个称为
calculateSalary()
作为一种抽象的方法。这样,就可以将此方法的实现留给
Employee
类。
package net.theitroad; public abstract class Employee { private String name; private int paymentPerHour; public Employee(String name, int paymentPerHour) { this.name = name; this.paymentPerHour = paymentPerHour; } public abstract int calculateSalary(); public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPaymentPerHour() { return paymentPerHour; } public void setPaymentPerHour(int paymentPerHour) { this.paymentPerHour = paymentPerHour; } }
这个
Contractor
类继承其父类的所有属性
Employee
但必须提供它自己的实现
calculateSalary()
方法。在这种情况下,我们将每小时的付款额乘以给定的工作时间。
package net.theitroad; public class Contractor extends Employee { private int workingHours; public Contractor(String name, int paymentPerHour, int workingHours) { super(name, paymentPerHour); this.workingHours = workingHours; } @Override public int calculateSalary() { return getPaymentPerHour() * workingHours; } }
这个
FullTimeEmployee
也有它自己的实现
calculateSalary()
方法。在这个例子中,我们乘以常数8小时。
package net.theitroad; public class FullTimeEmployee extends Employee { public FullTimeEmployee(String name, int paymentPerHour) { super(name, paymentPerHour); } @Override public int calculateSalary() { return getPaymentPerHour() * 8; } }