参照以上类结构图编写代码 难点:实现接口,接口继承,多重继承。 设计Shape2D以及Shape3D接口,继承自父接口Shape。 要求如下: (1)Circle类和Rectangle类实现Shape2D接口, Box类和Sphere类实现Shape3D接口。 Shape接口中有个setColor(String color)方法,用来给图形设置颜色。 (2)Shape2D接口中有一个计算面积的方法area(), 还有一个计算周长的方法perimeter()。 (3)Shape3D接口中有一个计算表面积的方法surfaceArea(), 还有一个计算体积的方法volume() (4) 实现接口的每个类中设置成员变量,并为成员变量设置get,set方法。 (5) 设计接口ShowInfo,其中有showShapeInfo()方法,用来显示实现该接口类对象的详细信息。(此处重点考察多重继承:类,子接口?) (6) 在测试类中创建Rectangle、Circle、Box、Sphere类对象, 对正方形、圆形;立方体、球体各对象的属性进行初始化 并且显示其面积、周长、表面积、体积等详细信息。 (7) 熟悉满足多态的三个条件,在本例中实现多态的编程思想。 1.继承(子类-父类; 子接口-父接口; 类-接口) 2.重写(子类要重写父类的方法; 接口) 3.父类的引用 指向 子类的对象(类;接口) 用Java写出来,标清楚每一句代码的注释
时间: 2023-06-23 14:08:07 浏览: 64
Shape接口:
```java
interface Shape {
void setColor(String color); // 给图形设置颜色
}
```
Shape2D接口:
```java
interface Shape2D extends Shape{
double area(); // 计算面积的方法
double perimeter(); // 计算周长的方法
}
```
Shape3D接口:
```java
interface Shape3D extends Shape{
double surfaceArea(); // 计算表面积的方法
double volume(); // 计算体积的方法
}
```
ShowInfo接口:
```java
interface ShowInfo {
void showShapeInfo(); // 显示实现该接口类对象的详细信息
}
```
Circle类:
```java
class Circle implements Shape2D, ShowInfo {
private double radius; // 成员变量
private String color; // 成员变量
// 构造方法
public Circle(double radius, String color) {
this.radius = radius;
setColor(color);
}
// 实现Shape接口的方法
@Override
public void setColor(String color) {
this.color = color;
}
// 实现Shape2D接口的方法
@Override
public double area() {
return Math.PI * Math.pow(radius, 2);
}
// 实现Shape2D接口的方法
@Override
public double perimeter() {
return 2 * Math.PI * radius;
}
// 实现ShowInfo接口的方法
@Override
public void showShapeInfo() {
System.out.println("形状:圆形");
System.out.println("半径:" + radius);
System.out.println("颜色:" + color);
System.out.println("面积:" + area());
System.out.println("周长:" + perimeter());
}
// 成员变量的get和set方法
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
```
Rectangle类:
```java
class Rectangle implements Shape2D, ShowInfo {
private double width; // 成员变量
private double height; // 成员变量
private String color; // 成员变量
// 构造方法
public Rectangle(double width, double height, String color) {
this.width = width;
this.height = height;
setColor(color);
}
// 实现Shape接口的方法
@Override
public void setColor(String color) {
this.color = color;
}
// 实现Shape2D接口的方法
@Override
public double area() {
return width * height;
}
// 实现Shape2D接口的方法
@Override
public double perimeter() {
return 2 * (width + height);
}
// 实现ShowInfo接口的方法
@Override
public void showShapeInfo() {
System.out.println("形状:矩形");
System.out.println("宽度:" + width);
System.out.println("高度:" + height);
System.out.println("颜色:" + color);
System.out.println("面积:" + area());
System.out.println("周长:" + perimeter());
}
// 成员变量的get和set方法
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
```
Box类:
```java
class Box implements Shape3D, ShowInfo {
private double length; // 成员变量
private double width; // 成员变量
private double height; // 成员变量
private String color; // 成员变量
// 构造方法
public Box(double length, double width, double height, String color) {
this.length = length;
this.width = width;
this.height = height;
setColor(color);
}
// 实现Shape接口的方法
@Override
public void setColor(String color) {
this.color = color;
}
// 实现Shape3D接口的方法
@Override
public double surfaceArea() {
return 2 * (length * width + length * height + width * height);
}
// 实现Shape3D接口的方法
@Override
public double volume() {
return length * width * height;
}
// 实现ShowInfo接口的方法
@Override
public void showShapeInfo() {
System.out.println("形状:立方体");
System.out.println("长度:" + length);
System.out.println("宽度:" + width);
System.out.println("高度:" + height);
System.out.println("颜色:" + color);
System.out.println("表面积:" + surfaceArea());
System.out.println("体积:" + volume());
}
// 成员变量的get和set方法
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
```
Sphere类:
```java
class Sphere implements Shape3D, ShowInfo {
private double radius; // 成员变量
private String color; // 成员变量
// 构造方法
public Sphere(double radius, String color) {
this.radius = radius;
setColor(color);
}
// 实现Shape接口的方法
@Override
public void setColor(String color) {
this.color = color;
}
// 实现Shape3D接口的方法
@Override
public double surfaceArea() {
return 4 * Math.PI * Math.pow(radius, 2);
}
// 实现Shape3D接口的方法
@Override
public double volume() {
return 4 * Math.PI * Math.pow(radius, 3) / 3;
}
// 实现ShowInfo接口的方法
@Override
public void showShapeInfo() {
System.out.println("形状:球体");
System.out.println("半径:" + radius);
System.out.println("颜色:" + color);
System.out.println("表面积:" + surfaceArea());
System.out.println("体积:" + volume());
}
// 成员变量的get和set方法
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
```
测试类:
```java
public class Test {
public static void main(String[] args) {
Rectangle r = new Rectangle(2, 3, "红色");
Circle c = new Circle(4, "绿色");
Box b = new Box(2, 3, 4, "蓝色");
Sphere s = new Sphere(5, "黄色");
System.out.println("-----------矩形-----------");
r.showShapeInfo();
System.out.println("-----------圆形-----------");
c.showShapeInfo();
System.out.println("-----------立方体-----------");
b.showShapeInfo();
System.out.println("-----------球体-----------");
s.showShapeInfo();
// 多态
Shape2D shape2D = r;
System.out.println("矩形的面积:" + shape2D.area());
System.out.println("矩形的周长:" + shape2D.perimeter());
Shape3D shape3D = b;
System.out.println("立方体的表面积:" + shape3D.surfaceArea());
System.out.println("立方体的体积:" + shape3D.volume());
}
}
```
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)