[英]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.