根据提示,补充下面的代码,编程验证接口中的属性都隐含为 static 及 final,所有的方法都为 public,在 Shape 接口中编写一个 double 类型的成员变量 pi 并赋值为 3.14,再创建一个 double 类型的抽象方法 area 方法;在“Exe4_2.java”中,用 class 声明一个 Circle 方法并继承 Shape 接口,在该方法内编写一个 double 类型的成员变量 r,然后再创建一个带参数的构造方法,参数为 double 类型的参数 r,最后编写继承 Shape 接口的 area 方法,用来计算圆的面积并返回出来。 代码:package step1; /******** Begin ********/ //用 class 声明一个 Circle 方法并继承 Shape 接口, //在该方法内编写一个 double 类型的成员变量 r, //创建一个带参数的构造方法,参数为 double 类型的参数 r, //编写继承 Shape 接口的 area 方法,用来计算圆的面积并返回出来。 /******** End ********/ public class Exe4_2{ public static void main(String[] args) { Circle c = new Circle(2); Shape2D s = (Shape2D)c; System.out.println("s.area is " + s.area()); //Exe4_2和Shape2D属于不同包,且不是Shape2D的子类,但可以访问s.area(), //说明Shape2D中的area()方法是public的 System.out.println("c.area is " + c.area()); System.out.println("Circle.pi = " + Circle.pi); // Circle.pi = 3.15; 不能为Circle.pi赋值, } } package step1; public interface Shape2D { /******** Begin ********/ //创建一个 double 类型的成员变量 pi 并赋值为 3.14, //再创建一个 double 类型的抽象方法 area 方法 /******** End ********/ } 测试输入:无; 预期输出: s.area is 12.56 c.area is 12.56 Circle.pi = 3.14
时间: 2025-05-13 20:57:57 浏览: 30
### 定义 Shape2D 接口
在 Java 中,可以通过定义一个接口 `Shape2D` 来满足需求。此接口应包含一个静态常量 `pi` 和一个公共抽象方法 `area()`。以下是具体实现:
```java
public interface Shape2D {
double PI = 3.14159; // 静态常量 pi
public abstract double area(); // 抽象方法用于计算面积
}
```
上述代码中,`PI` 被声明为 `static` 和 `final` 属性[^1],这意味着它是一个不可变的全局常量。而 `area()` 方法被标记为 `abstract`,表示任何实现该接口的类都必须提供其具体实现。
---
### 实现 Circle 类
为了使 `Circle` 类能够计算圆的面积,需让其实现 `Shape2D` 接口并重写其中的 `area()` 方法。此外,还需要为其定义一个构造函数以便初始化半径参数。下面是完整的 `Circle` 类实现:
```java
public class Circle implements Shape2D {
private double radius;
// 构造函数
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return PI * Math.pow(radius, 2); // 使用公式 πr² 计算面积
}
// 可选:toString 方法方便打印对象信息
@Override
public String toString() {
return "Circle with radius=" + radius + ", Area=" + area();
}
}
```
在此代码片段中,`radius` 是私有成员变量,代表圆的半径。构造函数接受一个双精度浮点数作为输入以初始化这个字段。`area()` 方法实现了圆形面积的计算逻辑,并利用了父接口中的 `PI` 常量[^2]。
---
### 测试代码示例
下面是一段测试代码,展示如何实例化 `Circle` 对象并调用其 `area()` 方法获取面积值:
```java
public class Main {
public static void main(String[] args) {
Circle circle = new Circle(5.0);
System.out.println(circle.toString());
}
}
```
运行以上程序会输出如下结果:
```
Circle with radius=5.0, Area=78.53975
```
这表明我们成功地基于接口定义了一个可以动态计算面积的对象模型[^3]。
---
####
阅读全文