1、编写接口(Shape) ,具有getArea0、 getPerimeter(两个方法; 编写类圆(Circle) 实现接口Shape,具有属性半径(r) ,并实现方法getArea()、 getPerimeter0,分别用于计算面积和周长。 注意要有带参数的构造方法;编写类长方形(Rectangle) 实现接口Shape,具賄属性长(x)、宽(y), 实现方法getArea0、getPerimeter()。注意要有带参数的构造方法。测试所定义的类。2、定义抽象类ShapeClass, 具有getArea(、 getPerimeter()两个方法; 编写类圆(CircleClass) 继承抽象类ShapeClass,賄属性半径(r) , 并实现方法getArea(、getPerimeter0,分别用于计算面积和周胀。注意要有带参数的构造方法;编写类长方形(RectangleClass) 继承抽象类ShapeClass, 具賄属性长(x) 、宽(y), 实现方法getArea0、getPerimeter()。 注意要有带参数的构造方法。测试所定义的类。
时间: 2023-06-10 15:09:06 浏览: 397
1. 接口 Shape 和实现类 Circle 和 Rectangle 的代码如下:
```java
public interface Shape {
double getArea();
double getPerimeter();
}
public class Circle implements Shape {
private double r;
public Circle(double r) {
this.r = r;
}
@Override
public double getArea() {
return Math.PI * r * r;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * r;
}
}
public class Rectangle implements Shape {
private double x;
private double y;
public Rectangle(double x, double y) {
this.x = x;
this.y = y;
}
@Override
public double getArea() {
return x * y;
}
@Override
public double getPerimeter() {
return 2 * (x + y);
}
}
```
上述代码中,接口 Shape 定义了 getArea 和 getPerimeter 两个方法,Circle 和 Rectangle 类都实现了 Shape 接口,具有相应的属性和方法。
2. 抽象类 ShapeClass 和继承类 CircleClass 和 RectangleClass 的代码如下:
```java
public abstract class ShapeClass {
public abstract double getArea();
public abstract double getPerimeter();
}
public class CircleClass extends ShapeClass {
private double r;
public CircleClass(double r) {
this.r = r;
}
@Override
public double getArea() {
return Math.PI * r * r;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * r;
}
}
public class RectangleClass extends ShapeClass {
private double x;
private double y;
public RectangleClass(double x, double y) {
this.x = x;
this.y = y;
}
@Override
public double getArea() {
return x * y;
}
@Override
public double getPerimeter() {
return 2 * (x + y);
}
}
```
上述代码中,抽象类 ShapeClass 定义了 getArea 和 getPerimeter 两个抽象方法,CircleClass 和 RectangleClass 类都继承了 ShapeClass 抽象类,具有相应的属性和方法。
测试代码如下:
```java
public class Test {
public static void main(String[] args) {
// 测试接口实现类
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(3, 4);
System.out.println("圆的面积为:" + circle.getArea() + ",周长为:" + circle.getPerimeter());
System.out.println("长方形的面积为:" + rectangle.getArea() + ",周长为:" + rectangle.getPerimeter());
// 测试抽象类继承类
ShapeClass circleClass = new CircleClass(5);
ShapeClass rectangleClass = new RectangleClass(3, 4);
System.out.println("圆的面积为:" + circleClass.getArea() + ",周长为:" + circleClass.getPerimeter());
System.out.println("长方形的面积为:" + rectangleClass.getArea() + ",周长为:" + rectangleClass.getPerimeter());
}
}
```
输出结果如下:
```
圆的面积为:78.53981633974483,周长为:31.41592653589793
长方形的面积为:12.0,周长为:14.0
圆的面积为:78.53981633974483,周长为:31.41592653589793
长方形的面积为:12.0,周长为:14.0
```
可以看到,两种方法实现的效果是一样的。
阅读全文