62,621
社区成员
发帖
与我相关
我的任务
分享
public abstract class Employee implements Payable, EmployeeInfo
{
private String name;
private double weeklyPay;
//构造器
public Employee(String name, String address)
{
this.name = name;
this.address = address;
}
//跟个人信息由关的方法
public String getName()
{
return name;
}
public void setName(String n)
{
name = n;
}
//跟薪水有关的方法
public double getWeeklyPay()
{
return weeklyPay;
}
public void computePay(int hoursWorked)
{
weeklyPay = hoursWorked * 6.50;
System.out.println("Weekly pay for " + name + " is $" + weeklyPay);
}
}
//Payable接口只提供跟薪水有关的方法
interface Payable
{
public void computePay(int hoursWorked);
public double getWeeklyPay();
}
//EmployeeInfo接口只提供跟个人信息有关的方法
interface EmployeeInfo
{
public String getName();
public void setName(String n);
}
//如果写一个会计的类,其中的方法把Payable作为参数,会计就只能使用跟薪水有关的方法,而不能修改Employee的个人信息
class Payroll
{
public void payEmployee(Payable p)
{
p.computePay(40);
}
public void printPaycheck(Payable p)
{
System.out.println("Printing check for $" + p.getWeeklyPay());
}
}
//如果再写一个HR的类,其中的方法的参数为EmployeeInfo,那么HR就只能使用跟员工个人信息有关的方法,而不能看到薪水等
class HumanResources
{
public String getInfo(EmployeeInfo e)
{
return e.getName() + " " + e.getAddress();
}
public void changeName(EmployeeInfo e, String name)
{
System.out.println("Changing name for " + e.getName());
e.setName(name);
System.out.println("New name is " + e.getName());
}
}
//这样一来,通过接口,Employee类就可以提供部分方法给该类的用户使用,而不会暴露其他的方法,这个是接口的作用之一