1. 程式人生 > >Java基礎 實驗四 抽象類和介面

Java基礎 實驗四 抽象類和介面

一、實驗內容

    1、定義一個抽象類Shape,它包含一個抽象方法getArea(),從Shape類派生出Rectangle和Circle類,這兩個類都用getArea()方法計算物件的面積。編寫應用程式使用Rectangle和Circle類。

實驗要求:定義Rectangle和Circle類的構造方法,初始化成員變數。

    2、學校中有老師和學生兩類人,而在職研究生既是老師又是學生。

    1)設計兩個資訊管理介面StudentInterface和TeacherInterface,其中StudentInterface介面包括setFee()方法和getFee()方法,分別用於設定和獲取學生的學費,TeacherInterface介面包括setPay()和getPay()方法,分別用於設定和獲取老師的工資。

    2)定義一個研究生類Graduate,實現StudentInterface介面和TeacherInterface介面,它定義的成員變數有name(姓名),sex(性別),age(年齡),fee(每學期學費) pay(月工資)。

    3)建立一個姓名為“zhangsan”的研究生,統計他的年收入和學費,如果收入減去學費不足2000元,則輸出“You  need a loan!”(需要貸款)的資訊,否則輸出“You income is enough!”資訊。

實驗要求:在Graduate中實現各個介面宣告的抽象方法。

二、實驗記錄

    1、Shape.java(抽象類)

package exceptionsix;

public abstract class Shape {
    double x,y;
    double r;
    Shape () {
        x = 0;
        y = 0;
        r = 0;
    }
    Shape (double a) {
        r = a;
    }
    Shape (double a, double b) {
    x = a;
    y =b;
    }
    abstract double getArea();
}

2、Rectangle.java

package exceptionsix;

public class Rectangle extends Shape {
    Rectangle () {
        super();
    }
    Rectangle (double a, double b) {
        super(a, b);
    }
    public double getArea () {
        return super.x * super.y;
    }
}

3、Circle.java

package exceptionsix;

public class Circle extends Shape {
    Circle () {
        super ();
    }
    Circle (double r) {
        super(r);
    }
    public double getArea () {
        return super.r * 2 * 3.1415;
    }
}

4、StudentInterface.java(介面類)

package questionTwo;
public interface StudentInterface {
    double setFee();//設定學費
    double getFee();//獲取學費
}

5、TeacherInterface.java(介面類)

package questionTwo;
public interface TeacherInterface {
    double setPay();//設定工資
    double getPay();//獲取工資
}

6、Graduate.java

package questionTwo;
public class Graduate implements StudentInterface, TeacherInterface{
    private String name;
    private String sex;
    private int age;
    private double fee;
    private double pay;
    public void setName(String a) {
        name = a;
    }
    public void setSex(String a) {
        sex = a;
    }
    public void setAge(int a) {
        age = a;
    }
    public void setFeePay(double a, double b) {
        fee = a;
        pay = b;
    }
    public double setFee(){
        return 0;
    }
    public double getFee(){//返回每學年的費用
        return fee * 2;
    }
    public double setPay(){
        return 0;
    }
    public double getPay(){//返回年收入
        return pay * 12;
    }
}

7、ExceptionSix.java(主類) 

package exceptionsix;
import questionTwo.*;
public class ExceptionSix {
    public static void main(String[] args) {
        System.out.println("問題一:*************************************************");
        Rectangle rec = new Rectangle (5.2, 13.14);
        System.out.println("矩形的面積為:"+rec.getArea());
        Circle cir = new Circle (5.2);
        System.out.println("圓的面積為:"+cir.getArea());
        System.out.println("問題二:*************************************************");
        Graduate graduate = new Graduate();
        graduate.setName("zhangSan");//設定姓名
        graduate.setFeePay(3250, 500);//設定每學期的費用,月工資
        System.out.println("學費為:"+graduate.getFee());
        System.out.println("年收入為:"+graduate.getPay()); 
        if(graduate.getPay() - graduate.getFee() > 2000) {
            System.out.println("You income is enough!");
        } else {
            System.out.println("You need a loan!");
        }
    }
}

三、實驗結果