web-dev-qa-db-ja.com

別のクラスからメソッド関数を呼び出す方法は?

私はJava 3つの異なるクラスを持つプロジェクトを書いています。これは私がこれまで持っているものです。私はちょうど別のクラスから別のクラスにメソッド関数を呼び出す方法に固執していますすでに2つのクラスを作成しました。「Date」クラスと「TemperatureRange」クラスを完了しましたが、これらの2つのクラスを「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;

    }
}
5
Eddie Wong

呼び出すメソッドを含むクラスへの参照が必要です。 AとBの2つのクラスがあるとします。BにはAから呼び出すメソッドがあります。クラスAは次のようになります。

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

    b = new B(); // Creating object of 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!");
    }
}
15
MarsAtomic

クラスWeatherRecordで:

クラスが異なるパッケージにある場合は最初にインポートします。そうでない場合、このステートメントは不要です

Import <path>.ClassName



次に、次のようにオブジェクトを参照するか呼び出します。

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の関数を呼び出すオブジェクトを作成する必要はありません。両方のクラスにはStatic Functionが含まれているため、オブジェクトを作成してthoes関数を呼び出すことはできません。

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


オブジェクトおよび静的関数の明確なコンセプトを持っています。 クリックしてください

1
Asis

メインクラス内で他のクラスをインスタンス化する必要があります。

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
Chad

ここにリンクの説明を入力してください クラスとオブジェクトの違いを理解する必要があります。 Javaチュートリアルから:

オブジェクトは、関連する状態と動作のソフトウェアバンドルです

クラスは、オブジェクトが作成されるブループリントまたはプロトタイプです

プロトタイプを定義しましたが、何もしませんでした。オブジェクトを使用するには、作成する必要があります。 Javaでは、newキーワードを使用します。

new Date();

オブジェクトを作成したクラスと同じ型の変数にオブジェクトを割り当てる必要があります。

Date d = new Date();

オブジェクトへの参照を取得したら、それを操作できます

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

これの例外は、クラスに属し、それを介して参照される静的メソッドです

パブリッククラスMyDate {public static date(){...}}

... MyDate.date();

知らない場合、Javaはすでに日付を表​​すクラスを持っているので、おそらく独自のものを作成したくないでしょう。

0
Romski

2番目のクラス内の1つのクラスのメソッドを呼び出すには、最初にそのクラスのオブジェクトを作成する必要があります。どのメソッドを呼び出すかは、オブジェクト参照を使用してメソッドを呼び出すことができます。

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"); 
}
0
Moni