簡體   English   中英

如何從另一個 class 調用方法 function?

[英]How to call a method function from another class?

我正在編寫一個包含三個不同類的 java 項目。 這是我到目前為止所擁有的。 我只是停留在如何從另一個 class 調用方法 function 到另一個 class。我已經寫了 2 個類。 我完成了“日期”class 和“溫度范圍”class; 現在我正在嘗試將這兩個類調用到“WeatherRecord”class 中。我不確定我的解釋是否正確。

public class WeatherRecord //implements Record
{

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


    public static void main (String[] args){

    }
}

這是另一個 class

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

這是另一個 class

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

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

    }
}

您需要對包含要調用的方法的類的引用。 假設我們有兩個類,A 和 B。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!");
    }
}

在類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 的函數。 由於兩個類都包含靜態函數,因此您不能通過創建對象來調用 thoes 函數。

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


對對象和靜態函數有清晰的概念。 點擊我

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

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

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

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

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

對象是相關狀態和行為的軟件包

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

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

new Date();

您需要將對象分配給與創建對象的類具有相同類型的變量。

Date d = new Date();

一旦你有了對象的引用,你就可以與它進行交互

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

例外是屬於該類並通過它引用的靜態方法

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

...
MyDate.date();

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

import <path>;
 My main java program:

import method;
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner n = new Scanner(System.in);
        int a,b,c;
        double area,s;
        System.out.print("Enter the 1st side->");
        a = n.nextInt();
        System.out.print("Enter the 2nd side->");
        b = n.nextInt();
        System.out.print("Enter the 3rd side->");
        c = n.nextInt();
        s=(a+b+c)/2.0;
        area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
        System.out.println("Area is = "+area);
        //factorial function is contained in the class method
        System.out.print(method.factorial(a));
    }
}

有一個黑客

當您創建應用程序的活動類時,選擇一個(最合乎邏輯的是您的啟動活動類)作為“主人”,並讓所有其他活動類擴展主人。 您在 master 中創建的任何公共方法都應該可以從任何其他活動類調用,前提是該方法使用的變量和參數也為其他活動類所知。

This is for public method and in same package both classes

1) create object that class and call method
e.g. A obj = new A();
       obj.m();

2) using inheritance e.g. extends 

public class A extends B
 {
 obj.m();
 }

3) if static method then directly call via class name
   A.m();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM