目录
一、题目要求
设计一个抽象类图形类,在该类中包含有至少三个抽象方法,分别用于求周长、求面积,以及对图形进行描述(如,“这是**形状,周长是**,面积是**”),分别定义圆形类、长方形类、等边三角形类来继承图形类,实现上述三个方法,并创建实例验证。
二、解题思路
首先定义一个抽象类Shape,然后定义三个抽象方法,接下来分别定义Circle类,Rectangle类和E_triangle类,这三个类去继承Shape类,并分别根据自身要求重写Shape类中的抽象方法。
三、具体代码
import static java.lang.Math.PI;
import static java.lang.Math.sqrt;
abstract class Shape {//形状类
abstract double perimeter();//周长
abstract double area();//面积
abstract void show();//输出显示
}
class Circle extends Shape{//圆类
private final double r;//半径
public Circle(double r) {//构造函数
this.r = r;
}
@Override
double perimeter(){
return 2*PI*r;
}
@Override
double area(){
return PI*r*r;
}
@Override
void show(){
System.out.println("这是圆形,周长是"+perimeter()+",面积是"+area());
}
}
class Rectangle extends Shape{//长方形类
private final double l;//长
private final double w;//宽
public Rectangle(double l,double w) {//构造函数
this.l=l;
this.w=w;
}
@Override
double perimeter() {
return 2*(l+w);
}
@Override
double area() {
return l*w;
}
@Override
void show() {
System.out.println("这是长方形,周长是"+perimeter()+",面积是"+area());
}
}
class E_triangle extends Shape{//等边三角形类
private final double side;//边长
public E_triangle(double side) {//构造函数
this.side = side;
}
@Override
double perimeter() {
return 3*side;
}
@Override
double area() {
return 0.25*sqrt(3)*side*side;
}
@Override
void show() {
System.out.println("这是等边三角形,周长是"+perimeter()+",面积是"+area());
}
}
public class T1{
public static void main(String[] args){
Circle c=new Circle(5);
c.show();
Rectangle r=new Rectangle(3,4);
r.show();
E_triangle e=new E_triangle(3);
e.show();
}
}
四、运行截图