java面向对象高级特性 ---接口案例(学校中有教师和学生两类人,而在职研究生既是教师又是学生)

学校中有教师和学生两类人,而在职研究生既是教师又是学生。
    1)设计两个接口studentinterface和teacherinterface。
    2)studentinterface接口包含setFee()getFee()方法,分别用于设置和获取学生的学费.
    3)teacherinterface接口包含setPay()和getPay()方法,分别用于设置和获取教师的工资.
    4)定义一个研究生类graduate,实现studentinterface接口和teacherinterface接口,它的成员变量有name,sex,age,fee,pay.
  5)创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“provide a loan”(需要贷款)信息。

6)要求:在graduate中实现各个接口定义的抽象方法

/**
 * 教师接口
 * @author Administrator
 *
 */
public interface TeacherInterface {
	
	// 设置教师的工资
	public abstract void setPay(double pay);
	
	// 获取教师的工资
	public abstract void getPay(double pay);
}

/**
 * 学生接口
 * @author Administrator
 *
 */
public interface StudentInterface {
	
	// 设置学生的学费
	public abstract void setFee(double fee);
	
	// 获取学生的学费
	public abstract void getFee(double fee);
}
import java.util.Scanner;

/**
 * 研究生类
 * @author Administrator
 *
 */
public class Graduate implements StudentInterface,TeacherInterface{
	// 成员变量
	String name;
	String sex;
	int age;
	double fee;
	double pay;
	
	// 实现接口中的抽象方法
	@Override
	public void setPay(double pay) {
		this.pay = pay * 12;
		System.out.println("你的年收入为:" + this.pay);
	}
	
	// 实现接口中的抽象方法
	@Override
	public void getPay(double pay) {
		this.pay = pay * 12;
		System.out.println("你的年收入为:" + this.pay);
	}
	
	// 实现接口中的抽象方法
	@Override
	public void setFee(double fee) {
		this.fee = fee;
		System.out.println("你的学费设置为:" + this.fee);
	}
	
	// 实现接口中的抽象方法
	@Override
	public void getFee(double fee) {
		this.fee = fee;
		System.out.println("你的学费为:" + this.fee);
	}
	
	/**
	 *  是否要贷款
	 * @return
	 */
	public boolean Loan(){
		if ((this.pay - this.fee) < 2000) {
			System.out.println("你的年收入" + this.pay + ",减去学费" + this.fee + "等于" + (this.pay - this.fee));
			return true;
		}
		System.out.println("你的年收入" + this.pay + ",减去学费" + this.fee + "等于" + (this.pay - this.fee));
		return false;
	}
	
	public static void main(String[] args) {
		// 创建一个研究生对象
		Graduate graduate = new Graduate();
		// 研究生对象的初始化
		graduate.name = "zhangsan";
		System.out.println("你好:" + graduate.name);
		
		// 设置月工资
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入你的月工资:");
		double pay = scanner.nextDouble();
		graduate.setPay(pay);
		
		// 设置学费
		System.out.println("请输入你的学费:");
		double fee = scanner.nextDouble();
		graduate.setFee(fee);
		
		// 判断是否需要贷款
		boolean flag = graduate.Loan();
		if (flag) {
			System.out.println("provide a loan(需要贷款)");
		}else {
			System.out.println("自给自足,丰衣足食");
		}
	}

}

你可能感兴趣的:(入门案例,接口,面向对象,抽象方法)