定义一个接口,包含方法求周长;定义抽象类Shape,包含抽象方法area方法求面积;定义Circle类是Shape类的子类并实现接口 Circle类包含成员变量半径,包含带参的构造方法,实现父类的area方法求圆的面积;Cylinder类是Circle类的子类,包含成员变量高 以及带参的构造方法;重写父类的构造方法,包括求圆柱的表面积的方法;主函数基于Circle类、Cylinder类创建对象,分别输出对 应的圆的面积和圆柱表面积的值,半径和高从键盘输入。
时间: 2024-02-24 22:54:22 浏览: 77
请看下面的代码实现:
```java
// 定义周长接口
interface Perimeter {
double getPerimeter();
}
// 定义抽象类Shape
abstract class Shape {
// 定义抽象方法求面积
public abstract double area();
}
// 定义Circle类,继承Shape类并实现Perimeter接口
class Circle extends Shape implements Perimeter {
private double radius; // 半径
// 带参构造方法
public Circle(double radius) {
this.radius = radius;
}
// 实现求面积的方法
public double area() {
return Math.PI * radius * radius;
}
// 实现求周长的方法
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
// 定义Cylinder类,继承Circle类
class Cylinder extends Circle {
private double height; // 高
// 带参构造方法
public Cylinder(double radius, double height) {
super(radius); // 调用父类的构造方法
this.height = height;
}
// 重写父类的构造方法,包括求圆柱的表面积的方法
@Override
public double area() {
return 2 * super.area() + super.getPerimeter() * height;
}
}
// 主函数
public class Main {
public static void main(String[] args) {
// 从键盘输入半径和高
Scanner scanner = new Scanner(System.in);
System.out.print("请输入圆的半径:");
double radius = scanner.nextDouble();
System.out.print("请输入圆柱的高:");
double height = scanner.nextDouble();
// 创建Circle对象并输出面积和周长
Circle circle = new Circle(radius);
System.out.println("圆的面积为:" + circle.area());
System.out.println("圆的周长为:" + circle.getPerimeter());
// 创建Cylinder对象并输出表面积
Cylinder cylinder = new Cylinder(radius, height);
System.out.println("圆柱的表面积为:" + cylinder.area());
}
}
```
运行该程序,可以按照提示输入圆的半径和圆柱的高,程序会输出圆的面积和周长,以及圆柱的表面积。注意,在实现Cylinder类时,需要重写父类的构造方法,并调用父类的构造方法。
阅读全文