目录
呈现结果
TestGeometric.java
import java.util.Arrays;
abstract class Geometric {
String color;
Boolean filled;
public Geometric() {
}
public Geometric(String color, Boolean filled) {
this.color = color;
this.filled = filled;
}
public abstract String getArea(); //抽象方法getArea()返回面积
public abstract String getPerimeter(); //抽象方法getPerimeter()返回周长
public String toString() {
return "颜色为:"+color+"\n是否填充:"+filled;
}
}
class Circle extends Geometric{
private double radius;
public Circle() {
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circle(String color, Boolean filled, double radius) {
super(color, filled);
this.radius = radius;
}
public Circle(double radius) {
this.radius = radius;
}
public String toString(){
return "该圆形半径为:"+radius;
}
public String getArea(){
return "\t该圆形面积为:"+radius*radius*Math.PI;
}
public String getPerimeter(){
return "\t该圆形周长为:"+2*Math.PI*radius;
}
}
class Rectangle extends Geometric{
private double side1; //长
private double side2; //宽
public Rectangle() {
}
public Rectangle(String color, Boolean filled, double side1, double side2) {
super(color, filled);
this.side1 = side1;
this.side2 = side2;
}
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public String toString(){
return "\n该矩形长为:"+side1+"\n该矩形宽为:"+side2;
}
public String getArea(){
return "\t该矩形面积为:"+side1*side2;
}
public String getPerimeter(){
return "\t该矩形周长为:"+2*(side1+side2);
}
}
class Triangle extends Geometric{
private double side1;
private double side2;
private double side3;
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) {
this.side3 = side3;
}
public Triangle() {
}
public Triangle(String color, Boolean filled, double side1, double side2, double side3) {
super(color, filled);
double[] d=new double[3];
d[0]=side1;
d[1]=side2;
d[2]=side3;
Arrays.sort(d); //升序
side1=d[0]; //小1
side2=d[1]; //小2
side3=d[2]; //大
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public String toString(){
return "\n该三角形第一条边为:"+side1+"\n该三角形第二条边为:"+side2+"\n该三角形第三条边为:"+side3;
}
public boolean isTriangle(){
// 1、三角形两条较小的边之和大于第三边。
// 2、三角形两条较大的边之差小于第三边。
if(side1+side2>side3&&side3-side2<side1){
return true;
}else{
return false;
}
}
public String getArea(){
return "\t该三角形面积为:"+Math.sqrt(side3*side3-(side2/2)*(side2/2))*side2/2;
}
public String getPerimeter(){
double Perimeter=side1+side2+side3;
return "\t该三角形周长为:"+Perimeter;
}
}
public class TestGeometric{
public static void main(String[] args){
Circle c1=new Circle(); //无参构造方法创建圆形
Rectangle r1=new Rectangle(); //无参构造方法创建矩形
Triangle t1=new Triangle(); //无参构造方法创建三角形
Geometric g1=new Circle("red",true,3);
Geometric g2=new Rectangle("red",false,3,5);
Geometric g3=new Triangle("red",true,5,7,10);
System.out.println(g1.toString());
System.out.println(g1.getArea());
System.out.println(g1.getPerimeter());
System.out.println(g2.toString());
System.out.println(g2.getArea());
System.out.println(g2.getPerimeter());
System.out.println(g3.toString());
if (((Triangle) g3).isTriangle()==true){
System.out.println("这三条线可以组成三角形!");
System.out.println(g3.getArea());
System.out.println(g3.getPerimeter());
}else{
System.out.println("这三条线不能组成三角形!");
}
}
}