编写程序描述以下类层次,见图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
(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));}}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款