设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法

设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法

设计抽象类 就要使用abstract关键字,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。

子类中利用extends关键字,对父类进行继承下面的代码就是四个图形对shape类进行继承。在继承的时候要将shape中的抽象方法全部复写出来。

import java.util.Scanner;
import static java.lang.Math.PI;
abstract class Shape {
    public abstract double shapeC();
    public abstract double shapeS();
}
class Circle extends Shape {
    private double r;
    public Circle (double r){
        this.r = r;
    }
    public double getR() {
        return r;
    }
    public void setR(double r) {
        this.r = r;
    }
    public double shapeC(){
        return PI*2*r;
    }
    public double shapeS(){
        return PI*r*r;
    }
}
class Square extends Shape {
    private double f;
    public Square (double f){
        this.f = f;
    }
    public double getF() {
        return f;
    }
    public void setF(double f) {
        this.f = f;
    }
    public double shapeC(){
        return 4*f;
    }
    public double shapeS(){
        return Math.pow(f,2);
    }
}
class Triangle extends Shape {
    private double a;
    private double b;
    private double c;
    public Triangle(double a,double b,double c){
        this.a = a;
        this.b = b;
        this.c = c;
    }
    public double getA() {
        return a;
    }
    public void setA(double a) {
        this.a = a;
    }
    public double getB() {
        return b;
    }
    public void setB(double b) {
        this.b = b;
    }
    public double getC() {
        return c;
    }
    public void setC(double c) {
        this.c = c;
    }
    public double shapeC(){
        return a+b+c;
    }
    public double shapeS(){
        double s = (a+b+c)/2.0;
        return Math.sqrt(s*(s-a)*(s-b)*(s-c));
    }
}
class Rectangle extends Shape {
    private double l;
    private double w;
    public Rectangle(double l, double w) {
        this.l = l;
        this.w = w;
    }

    public double getL() {
        return l;
    }

    public void setL(double l) {
        this.l = l;
    }

    public double getW() {
        return w;
    }

    public void setW(double w) {
        this.w = w;
    }
    public double shapeC(){
        return (l+w)*2;
    }
    public double shapeS(){
        return l*w;
    }
}
public class Calculate{
    public static void main(String[]args){
        boolean flag = true;
        while(flag){
            System.out.println("=============================");
            System.out.println("======请选择需要计算的图形======");
            System.out.println("         (1) 圆形");
            System.out.println("        (2)正方形");
            System.out.println("        (3)长方形");
            System.out.println("        (4)三角形");
            System.out.println("        (5)退  出");
            Scanner num = new Scanner(System.in);
            int n = num.nextInt();
            switch(n){
                case 1:{
                    System.out.println("请输入圆的半径:");
                    Scanner sc = new Scanner(System.in);
                    double a = sc.nextDouble();
                    Circle circle = new Circle(a);
                    System.out.println("圆的半径为:"+circle.getR());
                    System.out.println("圆的周长为:"+circle.shapeC());
                    System.out.println("圆的面积为:"+circle.shapeS());
                }
                break;
                case 2:{
                    System.out.println("请输入正方形的边长:");
                    Scanner s = new Scanner(System.in);
                    double f = s.nextDouble();
                    Square square = new Square(f);
                    System.out.println("正方形的边长为:"+square.getF());
                    System.out.println("正方形的周长为:"+square.shapeC());
                    System.out.println("正方形的面积为:"+square.shapeS());
                }
                break;
                case 3:{
                    System.out.println("请输入长方形的边长:");
                    Scanner s = new Scanner(System.in);
                    System.out.println("输入长方形的长:");
                    double l = s.nextDouble();
                    System.out.println("输入长方形的宽:");
                    double w = s.nextDouble();
                    Rectangle rectangle = new Rectangle(l,w);
                    System.out.println("长方形的长为:"+rectangle.getL()+"长方形的宽为:"+rectangle.getW());
                    System.out.println("长方形的周长为:"+rectangle.shapeC());
                    System.out.println("长方形的面积为:"+rectangle.shapeS());
                }
                break;
                case 4:{
                    System.out.println("请输入三角形的三边:");
                    Scanner s = new Scanner(System.in);
                    double a = s.nextDouble();
                    double b = s.nextDouble();
                    double c = s.nextDouble();
                    if ((a+b)>c && (a+c)>b && (b+c)>a){
                        Triangle triangle = new Triangle(a,b,c);
                        System.out.println("三角形的三边:"+ triangle.getA() + ", "+triangle.getB() + ", "+triangle.getC());
                        System.out.println("三角形的周长:"+triangle.shapeC());
                        System.out.println("三角形的面积:"+triangle.shapeS());
                    }else{
                        System.out.println("输入的三角形不成立,请重新输入!!!");
                    }
                }
                break;
                case 5:{
                    flag = false;
                }
                break;
            }
        }
    }
}

结果:

=============================
======请选择需要计算的图形======
         (1) 圆形
        (2)正方形
        (3)长方形
        (4)三角形
        (5)退  出
4
请输入三角形的三边:
3
4
5
三角形的三边:3.0, 4.0, 5.0
三角形的周长:12.0
三角形的面积:6.0
=============================
======请选择需要计算的图形======
         (1) 圆形
        (2)正方形
        (3)长方形
        (4)三角形
        (5)退  出
1
请输入圆的半径:
5
圆的半径为:5.0
圆的周长为:31.41592653589793
圆的面积为:78.53981633974483
=============================
======请选择需要计算的图形======
         (1) 圆形
        (2)正方形
        (3)长方形
        (4)三角形
        (5)退  出
2
请输入正方形的边长:
6
正方形的边长为:6.0
正方形的周长为:24.0
正方形的面积为:36.0
=============================
======请选择需要计算的图形======
         (1) 圆形
        (2)正方形
        (3)长方形
        (4)三角形
        (5)退  出
3
请输入长方形的边长:
输入长方形的长:
5
输入长方形的宽:
2
长方形的长为:5.0长方形的宽为:2.0
长方形的周长为:14.0
长方形的面积为:10.0
=============================
======请选择需要计算的图形======
         (1) 圆形
        (2)正方形
        (3)长方形
        (4)三角形
        (5)退  出
5

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值