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

}