1. 程式人生 > >JAVA第四次作業(2介面練習題)

JAVA第四次作業(2介面練習題)

課堂練習2:大學裡的學生(Student)需要交學費,而研究生(Graduate)作為學生比較特殊,除了需要交學費外,還可以獲取一部分科研津貼,由學校(University)統一發放。此外,學校還需要發放教師(Teacher)的工資。

編寫程式碼模擬上述場景:

1)     設計抽象類Student:

屬性包括姓名(name)、學費(fee);

方法包括:

-構造方法Student(String name)

-抽象方法void setFee(int fee)

-抽象方法int getFee()

2) 定義一個介面Salary:包含一個方法int getSalary();

3) 定義一個研究生類Graduate,繼承Student類且實現Salary介面:

新增屬性:收入(salary)

方法包括:

- 構造方法Graduate(String name)

- 重寫void setFee(int fee)

- 重寫int getFee()

- 重寫int getSalary(),研究生獲得工資1500

- 新增方法boolean isLoan(),判斷是否需要貸款(若收入小於學費則需貸款)

4) 定義一個教師類(Teacher):

屬性包括:姓名(name)、收入(salary)

方法包括:

- 構造方法Teacher(String name)

- 重寫int getSalary(),教師獲得工資3000

       5) 定義一個大學類(University),通過void payOff(Salary s)方法給研究生和教師發放並列印工資。

       6)定義主類Test,主函式中至少包括以下程式碼:

上機程式碼如下:

publicclass Graduate extends Student implements Salary {

    Graduate(String name) {

              super(name);

       }

       void setFee(int fee){

              this.fee=fee;

       }

        int getFee(){

                return fee;

          }

        public  int getSalary(){

                    return 1500;

             }

        boolean isLone(Graduate g){

               if(g.getFee()>g.getSalary())

                       return true;

               else

                       return false;

         }

}

public interface Salary {

     public int getSalary();

}

public abstract class Student implements Salary{

       String name;

       int fee;

    Student(String name){

              this.name=name;

              fee=2000;

       }

    abstract void setFee(int fee);

    abstract int getFee();

}

public   class Teacher implements Salary{

       String name;

      intsalary;

      Teacher(Stringname){

             this.name=name;

      }

      public  int getSalary(){

             return3000;

      }

}

public   class Test {

       /**

        *@param args

        */

       public static void main(String[] args) {

          Graduate g = new Graduate("研究生小亮");

          g.setFee(1000);

          System.out.println(g.name+"的學費是"+g.getFee());

          Teacher t= new Teacher("大王");

          University u=new University();

            u.payOff(g);

            System.out.println("是否需要貸款:"+g.isLone(g));

            System.out.print(t.name);

              u.payOff(t);

       }

}

public  class University {

       public void payOff(Salary s){

              System.out.println("發的工資為:"+s.getSalary());

       };

}