如何改进计划实施?使用引用类型作为接口和实例类型作为实现类进行测试时,程序失败。专注于使用不同的引用类型和实例类型创建对象。
package com;
interface Shape {
public abstract double getArea(double d);
}
public class TestCircle {
public static void main(String[] args) {
Circle s = new Circle();
System.out.println(s.getArea(5));
System.out.println(calculateArea(s,5));
Shape s1 = new Square();
System.out.println(calculateArea(s1,5));
}
public static double calculateArea(Shape s, double d){
if(s==null) return 0.0;
return s.getArea(d);
}
}
class Circle implements Shape{
public double getArea(double d){
if(d<0) return 0.0;
return d*d*(22.0/7);
}
}
class Square implements Shape{
public double getArea(double d){
//if(d<0) return 0.0;
return d*d;
}
}
答案 0 :(得分:-1)
稍微重新考虑你的代码。详细说明你想要实现的目标。您可能不需要静态calculateArea()!
package com;
interface Shape {
public double getArea(double d);
}
public class TestCircle {
public static void main(String[] args) {
Shape s = new Circle();
System.out.println(s.getArea(5d));
System.out.println(calculateArea(s,5d));
Shape s1 = new Square();
System.out.println(calculateArea(s1,5d));
}
public static double calculateArea(Shape s, double d){
if(s==null) return 0d;
return s.getArea(d);
}
}
class Circle implements Shape{
public double getArea(double d){
if(d<0) return 0d;
return d*d*(22.0/7);
}
}
class Square implements Shape{
public double getArea(double d){
//if(d<0) return 0.0;
return d*d;
}
}