2014-09-19 43 views
0

我試圖通過嘗試幾件事情來了解Java。我在同一個包中使用了兩個類。一個叫Box,另一個叫TestBox。我想使用calculateArea()來計算公司框的面積。此功能在另一個類TestBox。但Box中的功能calculateArea不響應TestBox中的功能。我錯過了這兩個類之間的鏈接。這看起來像一個簡單的問題,但我還沒有找到解決方案。有人可以幫我嗎?從java中的另一個類加入方法

package box; 

public class Box { 

    int length; 
    int width; 

    public static void main(String[] args) { 
     Box company = new Box(); 

     company.length = 3; 
     company.width = 4; 
     int area = company.calculateArea(); 
    } 
} 
package box; 

public class TestBox { 

    int length; 
    int width; 

    int calculateArea(){ 
     int area = length * width; 
     System.out.println("Area= " + area); 
    return area; 
    } 
} 
+0

「company」的類型(Read:Class)必須有一個名爲「calculateArea」的方法。 – folkol 2014-09-19 15:39:40

+0

如果'calculateArea'屬於'TestBox'類,那麼你可以在這個類的實例上調用這個方法。因爲'Box'沒有'calculateArea'方法,所以你不能在'Box'實例上調用它(在'company'引用中保存。 – Pshemo 2014-09-19 15:40:17

+0

我認爲你正在尋找'TestBox company = new TestBox();' – user1071777 2014-09-19 15:40:19

回答

-2
public static void main(String[] args) { 
    TestBox company = new TestBox(); 

    company.length = 3; 
    company.width = 4; 
    int area = company.calculateArea(); 

} 

} 
+2

或簡單地將'Box company = new Box();'改爲'TestBox company = new TestBox();'...順便說一下,在代碼解決方案旁邊描述什麼是原始問題以及爲什麼你的解決方案將工作。 – Pshemo 2014-09-19 15:41:18

+0

是的,這也可以。 – brso05 2014-09-19 15:42:54

+3

這個答案出現在低質量的審查隊列中,可能是因爲你沒有解釋代碼。如果你解釋它(在你的答案中),你更有可能得到更多的讚揚 - 而提問者實際上在學習一些東西! – 2014-09-19 16:20:44

1

我認爲你必須要澄清一點的是你的設計,我的意思是類框和TESTBOX應該做的,而且我建議使用使用IDE,比如Eclipse或Intellij Idea可幫助您突出語法並創建可能的錯誤。

你所面對的是encapsulation,即

封裝數據和功能爲單個組件。

所以箱子的面積由Box類自身計算是可行的。

關於你的代碼,一個可能的解決方案可能是:

package com.foo; 

public class Main { 

    public static void main(String[] args) { 
     Box box = new Box(3, 4); 

     int area = box.calculateArea(); 

     System.out.println("Box area is: " + area); 
    } 
} 

class Box { 

    private int l; 
    private int w; 

    Box(int length, int width) { 
     l = length; 
     w = width; 
    } 

    int calculateArea() { 
     return l * w; 
    } 
} 

另一種可能的辦法是

​​3210

如果你想有一個單獨的類做的工作,但它是我不喜歡,計算區域的函數與盒子相關,並對盒子變量起作用,我更喜歡第一個,但最好有更多的細節以防萬一。

我希望它有幫助。

0

按照下面的方法,您需要創建參數化構造函數,您可以在創建TestBox對象時傳遞長度和寬度值。您還需要創建一個默認的構造函數以備將來保存,以備日後只需創建默認的TestBox對象,如新的TestBox(); 您可以計算您TestBox類中的區域並返回Box類中的值。您無需在Box類中創建單獨的長度和寬度變量,也無需創建Box對象。

package box; 

public class Box { 

    public static void main(String[] args) { 
     TestBox company = new TestBox (3,4); 
     int area = company.calculateArea(); 
    } 
} 

package box; 

public class TestBox { 

    private int length; 
    private int width; 

    TestBox() 
    { 
    } 

    TestBox(int l, int w) 
    { 
     this.length = l; 
     this.width = w; 
    } 

    public int getLength() { 
     return length; 
    } 

    public int getWidth() { 
     return width; 
    } 


    int calculateArea(){ 
     int area = length * width; 
     System.out.println("Area= " + area); 
     return area; 
    } 
} 
相關問題