设计一个图形类shape

一、设计一个图形类Shape,包括:

(一)成员属性(私有)

(1)面积area

(2)周长per

(3)颜色color

(二)成员方法

(1)构造方法:无参的构造方法。

(2)构造方法:为颜色赋值的构造方法

(3)抽象方法getArea():计算面积

(4)抽象方法getPer():计算周长

(5)抽象方法showAIl():输出面积、周长、颜色信息。

设计一个图形类shape的java代码如下:

    public abstract class Shape{
        private double area;//面积
        private double per;//周长
        private String color;//颜色
        
        public Shape() {}//无参构造方法
        
        public Shape(String color) {//有参构造方法
            this.color = color;
        }
        
        public abstract double getArea();//抽象方法:计算面积
        public abstract double getPer();//抽象方法:计算周长
        public abstract double showAIl();//抽象方法:输出面积、周长、颜色信息。
        
    }

根据你的要求,我为您设计了以下图形类Shape:

public abstract class Shape {

    private double area;
    private double per;
    private String color;

    public Shape() {
    }

    public Shape(String color) {
        this.color = color;
    }

    public abstract double getArea();

    public abstract double getPer();

    public abstract void showAll();

    // Getter 和 Setter 略
}

其中,面积和周长是私有的成员属性,而颜色则是共有的。构造方法中,无参构造方法用于创建对象,而带颜色参数的构造方法则可以为对象赋初始颜色。把计算面积、周长和输出面积、周长、颜色信息的方法作为抽象方法,由子类去具体实现。

以下内容部分参考ChatGPT模型:


思路:

  1. 定义一个Shape类,包含面积、周长和颜色三个私有属性;
  2. 提供两个构造方法,一个无参构造方法,一个可以设置颜色的构造方法;
  3. 提供公共的get和set方法,可以获取和设置面积、周长和颜色属性;
  4. 提供计算面积和周长的方法,由于Shape类是一个抽象类,所以这两个方法需要在子类中具体实现。

示例代码:

public abstract class Shape {
    private double area;
    private double per;
    private String color;
    
    public Shape() {
    }
    
    public Shape(String color) {
        this.color = color;
    }
    
    public double getArea() {
        return area;
    }
    
    public void setArea(double area) {
        this.area = area;
    }
    
    public double getPer() {
        return per;
    }
    
    public void setPer(double per) {
        this.per = per;
    }
    
    public String getColor() {
        return color;
    }
    
    public void setColor(String color) {
        this.color = color;
    }
    
    public abstract void calculateArea();
    
    public abstract void calculatePer();
}

在子类中具体实现计算面积和周长的方法,例如:

public class Circle extends Shape {
    private double radius;
    
    public Circle(double radius, String color) {
        super(color);
        this.radius = radius;
    }
    
    public double getRadius() {
        return radius;
    }
    
    public void setRadius(double radius) {
        this.radius = radius;
    }
    
    @Override
    public void calculateArea() {
        setArea(Math.PI * radius * radius);
    }
    
    @Override
    public void calculatePer() {
        setPer(2 * Math.PI * radius);
    }
}

如果我的建议对您有帮助、请点击采纳、祝您生活愉快


public abstract class Shape {
 
    private double area;
    private double per;
    private String color;
 
    public Shape() {
    }
 
    public Shape(String color) {
        this.color = color;
    }
 
    public abstract double getArea();
 
    public abstract double getPer();
 
    public abstract void showAll();

}


```java

package test03;

abstract class ShapeMsg {
    private double area;
    private double per;
    private String color;
    //无参构造方法
    public ShapeMsg() {
        
    }
    //为color属性赋值
    public ShapeMsg(String color) {
        this.color=color;
    }
    //抽象方法,没有方法体,有abstract关键字做修饰
    public abstract double getArea();
    public abstract double getPer();
    public abstract void showAll();
}
class Msg extends Shape{
    
    public double getArea() {
        return 1.00;
    }
    public double getPer() {
        return 2.00;
    }
    public String getColor() {
        return "red";
    }
    public String showAll() {
        return "面积,周长和颜色分别为:"+getArea()+","+getPer()+","+getColor()+"。";
    }
}
public class Shape{

    public static void main(String[] args) {
        Msg sMsg=new Msg();
        System.out.println(sMsg.showAll());
    }
}


```