Java课后大作业

编写程序描述以下类层次,见图1所示,其中人为一个普通类,其属性包

括:姓名、性别、出生日期等,方法为 printInfo() 。教师包括学校和工号属性;学生包括学校、学号和年级属性;

编写一个测试类 TestPerson,在 main 方法中创建 1 个教师和 1 个学生对象,输出对象的所有属性信息。

public class Person {
    String name;
    char sex;
    String birthday;

    public void printInfo() {
        System.out.print("姓名:" + name +"\t"+ "性别:" + sex+"\t" + "出生日期:" + birthday); }}

public class Student extends Person{
    String school;
    String major;
    int studentID;
    int grade;
    int zlass;//班级
}

public class Teacher extends Person{
    String school;
    int teacherID;}
测试类
public class TestPerson {
    public static void main(String args[]) {
        Teacher t = new Teacher();
        Student s = new Student();
        System.out.println("教师:");
        t.name = "xxx";
        t.sex = '男';
        t.birthday = "2000-8-12";
        t.teacherID = 234556465;
        t.school = "xxx";
        t.printInfo();
        System.out.println("\t" + "工号:" + t.teacherID + "\t" + "出生日期:" + t.birthday + "\t" + "学校:" + t.school);
        System.out.println("学生:");
        s.name = "xxx";
        s.sex = '男';
        s.birthday = "2000-8-12";
        s.studentID = 234556465;
        s.school = "xxx";
        s.major = "计算机";
        s.grade = 22;
        s.zlass = 6;
        s.printInfo();
        System.out.println("\t" + "学号:" + s.studentID + "\t" + "学校:" + s.school + "\t" + "专业:" + s.major + "\t" + "年级" + s.grade + "班级" + s.zlass);
    }}

定义一个父类:形状类Shapes,里面有两个方法,分别是求面积和周长。

定义一个子类:矩形Rectangle

定义一个子类:三角形 Triagle

定义一个子类:圆 Circle

定义一个测试类:传入圆的半径4 输出周长和面积

传入矩形的长和宽4,5 输出周长和面积

传入三角形三边:3,4,5 输出周长和面积

public class Circle extends Shapes {
    private double radius;
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    @Override
    public double Area() {
        return Math.PI * radius * radius;
    }
    @Override
    public double Perimeter() {
        return (Math.PI * radius) * 2;
    }}

public class Rectangle extends Shapes {
    int width;
    int height;
    public void setWidth(int width) {
        this.width = width;
    }
    public void setHeight(int height) {
        this.height = height;
   }
    @Override
    public double Area() {
        return width * height;
    }
    @Override
    public double Perimeter() {
        return 2 * (width + height);}}

public abstract class Shapes {
    public abstract double Area();

    public abstract double Perimeter();
}

public class Triagle extends Shapes {
    int a;
    int b;
    int c;
    int d;
    int p;
    public int getA() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }
    public int getB() {
        return b;
    }
    public void setB(int b) {
        this.b = b;
    }
    public int getC() {
        return c;
    }
    public void setC(int c) {
        this.c = c;
    }
    @Override
    public double Area() {
        if ((a + b > c) && (a + c > b) && (c + b > a))
            d = a + b + c;
        p = d / 2;
        return Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }
    @Override
    public double Perimeter() {
        return a + b + c;
    }}
测试类
public class test {
    @Test
    public void Circle() {
        Circle c = new Circle();
        c.setRadius(4);
        System.out.println("圆:");
        System.out.println("面积" + c.Area());
        System.out.println("周长" + c.Perimeter());
    }
    @Test
    public void Rectangle() {
        Rectangle r = new Rectangle();
        r.setHeight(4);
        r.setWidth(5);
        System.out.println("矩形:");
        System.out.println("面积" + r.Area());
        System.out.println("周长" + r.Perimeter());

    }
    @Test
    public void Triagle() {
        Triagle t = new Triagle();
        t.setA(3);
        t.setB(4);
        t.setC(5);
        System.out.println("三角型:");
        System.out.println("面积" + t.Area());
        System.out.println("周长" + t.Perimeter());
    }}

(1)编写一个矩形类Rect,包含:两个属性:矩形的宽width;矩形的高height。

两个构造方法:

1.一个带有两个参数的构造方法,用于将width和height属性初化;

2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。

两个方法:

求矩形面积的方法area()

求矩形周长的方法perimeter()

(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用矩形的左上角坐标来标识,包含:添加两个属性:矩形左上角坐标startX和startY。

两个构造方法:

带4个参数的构造方法,用于对startX、startY、width和height属性初始化;不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0的矩形;

添加一个方法:判断某个点是否在矩形内部的方法isInside(double x,double y)。如在矩形内,返回true, 否则,返回false。

 提示:点在矩形类是指满足条件:x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-height)

(3)编写PlainRect类的测试程序创建一个左上角坐标为(10,10),长为20,宽为10的矩形对象;计算并打印输出矩形的面积和周长;判断点(25.5,13)是否在矩形内,并打印输出相关信息。

public class PlainRect extends Rect {
    double startX;
    double startY;
    public double getStartY() {
        return startY;
    }
    public void setStartY(double startY) {
        this.startY = startY;
    }
    public double getStartX() {
        return startX;
    }
    public void setStartX(double startX) {
        this.startX = startX;
    }
    public PlainRect(double width, double height, double startX, double startY) {
        this.width = width;
        this.height = height;
        this.startX = startX;
        this.startY = startY;
    }
    public PlainRect() {
        this.width = 0;
        this.height = 0;
        this.startX = 0;
        this.startY = 0;
    }
    public boolean isInside(double x, double y) {
        if (x >= startX && x <= (startX + width) && y < startY && y >= (startY - height)) {
            return true;
        } else {
            return false;
        }}}

public class Rect {
    double width;
    double height;
    public Rect() {
        this.width = 10;
        this.height = 10;
    }
    public Rect(double width, double height) {
        this.width = width;
        this.height = height;
    }
    public double Area() {
        return width * height;
    }
    public double Perimeter() {
        return 2 * (width + height); }}
测试类
public class testPlainRect {
    public static void main(String[] args) {
        PlainRect p = new PlainRect(10, 20, 10, 10);
        System.out.println("面积" + p.Area());
        System.out.println("周长" + p.Perimeter());
        System.out.println(p.isInside(25.5, 13));}}

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值