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;
}
}

