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!");
}
}
}