Java基础 实验四 抽象类和接口

版权声明:@YDDUONG https://blog.csdn.net/y_dd6011/article/details/86372416

一、实验内容

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

三、实验结果

猜你喜欢

转载自blog.csdn.net/y_dd6011/article/details/86372416