1. 实验要求: 问题描述 定义一个图形抽象类Shape,从抽象层面描述通用的图形操作,包括计算并返回当前图形的面积和周长两项(定义为抽象方法)。然后定义其子类Rectangle、Triangle、Circle分别描述矩形、三角形、圆形等三种不同形状,并添加必要的属性和方法、分别重写其从父类中继承的面积及周长计算方法。最后编写Java应用程序测试前述定义的图形类及其相关功能。 说明与提示 已知三条边长的情况下,可使用海伦公式计算三角形面积: S=√p(p-a)(p-b)(p-c) 其中:a、b、c为三角形的三条边长;p为三角形的半周长,即p=(a+b+c)/2;S为三角形的面积。 算数开平方运算可调用JDK系统类Math的静态方法sqrt,其中还定义了圆周率常量PI,详情请自行查阅JDK API文档。
package javastudent423;
abstract class Shape_basic{
public abstract void perimeter();//周长
public abstract void area();//面积
}
class Circle_basic extends Shape_basic{
public double r;
@Override
public void perimeter() {
System.out.println("圆形的周长为:"+4*3.14*r);
}
@Override
public void area() {
System.out.println("圆形的面积为:"+r*3.14*r);
}
}
class Triangle_basic extends Shape_basic{
public double length1,length2,length3,length;
@Override
public void perimeter() {
length = length1+length2+length3;
System.out.println("三角形的周长为:"+length);
}
@Override
public void area() {
double d = (length1+length2+length3)/2;
System.out.println("三角形的面积为:"+Math.sqrt(d*(d-length1)*(d-length2)*(d-length3)));
}
}
class Rect_basic extends Shape_basic{
public double r_long,r_wider;
@Override
public void perimeter() {
System.out.println("矩形的周长为:"+2*(r_long+r_wider));
}
@Override
public void area() {
System.out.println("矩形的面积为:"+r_long*r_wider);
}
}
public class Shape{
public static void main(String[] arge) {
Circle_basic c1 = new Circle_basic();
c1.r = 3;
System.out.println("圆形的半径为:"+c1.r);
c1.area();
c1.perimeter();
Triangle_basic t1 = new Triangle_basic();
t1.length1 = 3;
t1.length2 = 4;
t1.length3 = 5;
System.out.println("三角形的三边长分别为:"+t1.length1+","+t1.length2+","+t1.length3);
t1.area();
t1.perimeter();
Rect_basic r1 = new Rect_basic();
r1.r_long = 4;
r1.r_wider = 3;
System.out.println("矩形的长宽分别为:"+r1.r_long+","+r1.r_wider);
r1.area();
r1.perimeter();
}
}