Java 创建具有不同引用类型和实例类型的对象

Java 创建具有不同引用类型和实例类型的对象,java,interface,Java,Interface,如何改进计划的实施?当以引用类型作为接口,实例类型作为实现类进行测试时,程序失败。集中精力创建具有不同引用类型和实例类型的对象 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

如何改进计划的实施?当以引用类型作为接口,实例类型作为实现类进行测试时,程序失败。集中精力创建具有不同引用类型和实例类型的对象

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;
}
}
package-com;
界面形状{
公共抽象双区域(双d);
}
公共类测试圈{
公共静态void main(字符串[]args){
圆s=新圆();
系统输出打印LN(s.getArea(5));
系统输出打印项数(计算项数(s,5));
形状s1=新正方形();
系统输出println(calculateArea(s1,5));
}
公共静态双计算器ea(形状s,双d){
如果(s==null)返回0.0;
返回s.getArea(d);
}
}
类圆形实现形状{
公共双通道区域(双d){

如果(d对代码进行了一点重新分解,请详细说明您试图实现的目标。您可能不需要静态calculateArea()

package-com;
界面形状{
公共双通道区域(双d);
}
公共类测试圈{
公共静态void main(字符串[]args){
形状s=新圆();
系统输出打印LN(s.getArea(5d));
系统输出打印LN(calculateArea(s,5d));
形状s1=新正方形();
系统输出println(calculateArea(s1,5d));
}
公共静态双计算器ea(形状s,双d){
如果(s==null)返回0d;
返回s.getArea(d);
}
}
类圆形实现形状{
公共双通道区域(双d){

如果(dIn)程序以什么方式失败了?“程序失败了”?失败的原因是什么?可能是您想要的:
final Shape s=new Circle();
“创建具有不同引用类型和实例类型的对象”是胡言乱语。它应该是“使用给定类型声明变量,并使用子类型的实例初始化它”。(我意识到你只是抄袭和粘贴了你的作业,所以这不是你的错,但仍然…)我是唯一一个不能解密这个问题的人吗?…:程序运行顺利,但我想知道我是否可以改进程序
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;
    }
}