问题:为一个“Java 州立大学”的学生建立账单系统,州内外的学生收费不同,州内每学分收费¥75,州外为¥200,每个学生的账单上有学校名称、学生姓名、信用卡使用时间以及账单的总数。
尝试用抽象类解决
package Test;
public class BursarsOffice {
public static void main(String[] args){
InStateStudent resident = new InStateStudent("John Doe",24);
OutStateStudent alien = new OutStateStudent("Joan Smith",26);
resident.showStudent();
alien.showStudent();
}
}
abstract class Student{
protected final static double INSTATE_RATE = 75;
protected final static double OUTSTATE_RATE = 200;
protected String name;
protected int hours;
public abstract void showStudent();
public final void showSchoolName(){
System.out.println("Java State University");
System.out.println("*********************");
}
}
class OutStateStudent extends Student{
public OutStateStudent(String _name, int _hours){
name=_name;
hours = _hours;
}
public void showStudent(){
showSchoolName();
System.out.println(name+" takes " + hours + " credits.");
System.out.println("OutState bill: " + hours*OUTSTATE_RATE);
}
}
class InStateStudent extends Student{
public InStateStudent(String _name,int _hours){
name = _name;
hours = _hours;
}
public void showStudent(){
showSchoolName();
System.out.println(name + " takes " + hours + " credits.");
System.out.println("InState bill: "+ hours*INSTATE_RATE);
}
}
输出结果: