一、设计一个图形类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 略
}
其中,面积和周长是私有的成员属性,而颜色则是共有的。构造方法中,无参构造方法用于创建对象,而带颜色参数的构造方法则可以为对象赋初始颜色。把计算面积、周长和输出面积、周长、颜色信息的方法作为抽象方法,由子类去具体实现。
思路:
示例代码:
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());
}
}
```