2014-10-09 103 views
2

我正在寫一個有三個不同類的java項目。這是迄今爲止我所擁有的。我只是堅持如何從另一個類調用另一個類的方法函數。我已經寫了2個班。我完成了「Date」類和「TemperatureRange」類;現在我試圖將這兩個類稱爲「WeatherRecord」類。我不確定我是否解釋這個權利。如何從另一個類中調用方法函數?

public class WeatherRecord //implements Record 
{ 

    private String TemperatureRangetoday; 
    private String TemperatureRangenormal; 
    private String TemperatureRangerecord; 


    public static void main (String[] args){ 

    } 
} 

這是另一個類

public class Date 
{ 
    public static String date(String date, String month, String year){ 
     String rdate = date + " " +month + " " +year; 
     return rdate; 
    } 
} 

而這裏的另一個類

public class TemperatureRange 
{ 
    public static String TempRange (String high, String low){ 

     String rTempRange = high +"high" + " "+low+"low"; 
     return rTempRange; 

    } 
} 

回答

10

你需要包含要調用該方法的類的引用。比方說,我們有兩個類,A和B. B有你想從A類的調用看起來像這樣的方法:

public class A 
{ 
    B b; // A reference to B 

    b = new B(); // Creating class B 

    b.doSomething(); // Calling a method contained in class B from class A 
} 

B,其中包含DoSomething的()方法是這樣的:

public class B 
{ 
    public void doSomething() 
    { 
     System.out.println("Look, I'm doing something in class B!"); 
    } 
} 
+0

在那個筆記,我不認爲他應該使用靜態方法,因爲他正在創建Date和TemperatureRange的實例。靜態方法將意味着它們將屬於它們所在的類,而不是實例。 – tenkii 2014-10-09 02:13:12

+0

我懷疑他遇到了一些問題,試圖從他的主要方法中調用非靜態方法。我不知道我的例子是否過於籠統,我應該爲他的代碼專門定製它,但我總是對勺子餵養保持謹慎...... – MarsAtomic 2014-10-09 02:15:13

+0

這是被稱爲依賴注入的設計模式嗎?還是那種完全不相關的東西? – 2017-07-21 11:41:47

0

您需要實例化主類中的其他類;

Date d = new Date(params); 
TemperatureRange t = new TemperatureRange(params); 

然後,您可以撥打他們的方法有:

object.methodname(params); 
d.method(); 

你目前在你的其他類的構造函數。你不應該返回任何東西。

public Date(params){ 
    set variables for date object 
} 

接下來你需要一個方法來引用。

public returnType methodName(params){ 
    return something; 
} 
0

您需要了解類和對象之間的區別。 Java教程:

的對象是相關的狀態和行爲的軟件捆綁

類是從中創建對象的藍圖或原型

您已經定義了原型但他們沒有做任何事情。要使用對象,您需要創建它。在Java中,我們使用new關鍵字。

new Date();

您需要將對象分配給同一類型的對象是從創建類的一個變量。

Date d = new Date();

一旦有了對象的引用,你可以用它

d.date("01", "12", "14");

例外的互動是屬於類,並通過它

引用靜態方法

public class MyDate { public static date(){...} }

... MyDate.date();

如果您不知道,Java已經有一個表示日期的類,您可能不想創建自己的類。

1

WeatherRecord類:

先導入類,如果他們是在不同的包中還有這種說法並不需要

Import <path>.ClassName 



然後,就referene或撥打你的對象,如:

Date d; 
TempratureRange tr; 
d = new Date(); 
tr = new TempratureRange; 
//this can be done in Single Line also like : 
// Date d = new Date(); 



但是在你的代碼中,你不需要創建一個對象來調用Date和TempratureRange的函數。由於這兩個類都包含靜態函數,因此不能通過創建對象來調用thoes函數。

Date.date(date,month,year); // this is enough to call those static function 


對對象和靜態功能清晰的概念。 Click me

0

爲了調用第二個類中的一個類的方法,您必須首先創建該類的對象,而不是使用可調用方法的對象引用調用您想要調用的方法。

Class A { 

Public void fun(){ 

//do something 

} 

Class B 
{ 
public static void main(String args[]){ 
A obj = new A(); 
obj.fun(); 
} 
} 

但在你的情況下,你有Date和TemperatureRange類中的靜態方法。您可以通過直接使用類名來調用您的靜態方法,就像下面的代碼一樣,或者像上面的代碼一樣創建該類的對象,但使用靜態方法,大多數情況下我們用於創建實用程序類,所以使用類名稱調用方法的最佳方式。就像你的情況 -

public static void main (String[] args){ 

String dateVal = Date.date("01","11,"12"); // calling the date function by passing some parameter. 

String tempRangeVal = TemperatureRange.TempRange("80","20"); 
} 
相關問題