2015-01-16 90 views
-1

如何改進程序實現?當使用引用類型作爲實現類的接口和實例類型進行測試時,程序失敗。專注於創建具有不同引用類型和實例類型的對象。使用不同的引用類型和實例類型創建對象

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; 
} 
} 
+2

程序失敗的方式是什麼? – Eran

+0

「程序失敗」?什麼是失敗?可能是你想要的:'最終Shape s = new Circle();' – SuperSaiyan

+2

「使用不同的引用類型和實例類型創建一個對象」是無稽之談。它應該是「聲明一個給定類型的變量並用一個子類型的實例初始化它」。 (我意識到你剛從作業中複製粘貼,所以這不是你的錯,但仍然......) – ruakh

回答

-1

重新考慮了你的代碼。詳細說明你想達到的目標。你可能不需要static 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; 
    } 
} 
+0

你改變了什麼? – Prashant

相關問題