我的JAVA程序为什么报错呢?

public interface ShapeArea {
abstract double getArea();
abstract double getPerimeter();
}

class Circle implements ShapeArea {
static double PI = 3.14;
double radius;
double area,perimeter;

public Circle(double r){
this.radius = r;
}

public double getArea(double radius) {
return area = PI*radius*radius;
}

public double getPerimeter() {
return perimeter = 2*PI*radius;
}

public String toString(){
return "Raius = " + radius + "," + "Perimeter = " + perimeter + "," + "Area = " + area;
}
}

class App {
public static void main(String[] args){
Circle cir = new Circle(4.6);
System.out.println(cir.toString());
}
}

Circle类没实现ShapeArea接口的定义的abstract double getArea()方法,一个类实现一个接口必须实现这个接口的所有方法,正确的如下:
public interface ShapeArea {
abstract double getArea();
abstract double getPerimeter();
}

class Circle implements ShapeArea {
static double PI = 3.14;
double radius;
double area,perimeter;
public double getArea(){
return 0;
}

public Circle(double r){
this.radius = r;
}

public double getArea(double radius) {
return area = PI*radius*radius;
}

public double getPerimeter() {
return perimeter = 2*PI*radius;
}

public String toString(){
return "Raius = " + radius + "," + "Perimeter = " + perimeter + "," + "Area = " + area;
}
}

class App {
public static void main(String[] args){
Circle cir = new Circle(4.6);
System.out.println(cir.toString());
}
} 答案补充 你跟本就没有实现abstract double getArea()这个方法,当然会报错,你写的那个方法多了一个参数,你应该把接口的getArea()方法加一个参数如:getArea(double radius)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-21
// App.java
// 由于一个文件中只能有一个是公共的,所以接口要在另一个文件中(ShapeArea.java)
class Circle implements ShapeArea {
static double PI = 3.14;
double radius;
double area,perimeter;

public Circle(double r){
this.radius = r;
}

public double getArea(double radius) {
return area = PI*radius*radius;
}

public double getArea() { return 0;} //这是接口中的方法,一定要在实现类中重写

public double getPerimeter() {
return perimeter = 2*PI*radius;
}

public String toString(){
return "Raius = " + radius + "," + "Perimeter = " + perimeter + "," + "Area = " + area;
}
}

public class App {
public static void main(String[] args){
Circle cir = new Circle(4.6);
System.out.println(cir.toString());
}
}
// 运行通过 over ^_^
// ShapeArea.java
public interface ShapeArea {
abstract double getArea();
abstract double getPerimeter();
}
相似回答