如何从另一个类调用方法函数?
Posted
技术标签:
【中文标题】如何从另一个类调用方法函数?【英文标题】:How to call a method function from another class? 【发布时间】:2014-12-03 20:08:12 【问题描述】:我正在编写一个包含三个不同类的 java 项目。这是我到目前为止所拥有的。我只是坚持如何将方法函数从另一个类调用到另一个类。我已经写了两节课了。我完成了“日期”类和“温度范围”类;现在我正试图将这两个类称为“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;
【问题讨论】:
【参考方案1】:您需要对包含您要调用的方法的类的引用。假设我们有两个类,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
包含 doSomething() 方法的 B 如下所示:
public class B
public void doSomething()
System.out.println("Look, I'm doing something in class B!");
【讨论】:
在这点上,我认为他不应该使用静态方法,因为他正在创建 Date 和 TemperatureRange 的实例。静态方法意味着它们将属于它们所在的类,而不是实例。 我怀疑他在尝试从他的主要方法中调用非静态方法时遇到了一些问题。我想知道我的例子是否过于笼统,我应该专门为他的代码定制它,但我总是对勺子喂食保持警惕...... 这就是所谓的依赖注入设计模式吗?还是完全不相关? @ZaidHumayun 我给出的代码演示了一个简单的依赖关系。依赖注入有几种不同的形式,但在这种情况下,涉及将对现有类 B 的引用传递给类 A。例如,如果类 A 具有构造函数public A(B instanceOfB) this.b = instanceOfB
。术语injection
表示将某物(在本例中为对象引用)推入其他物(另一个对象)。【参考方案2】:
在课堂上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 的函数。由于这两个类都包含静态函数,因此您不能通过创建对象来调用 thes 函数。
Date.date(date,month,year); // this is enough to call those static function
对对象和静态函数有清晰的概念。 Click me
【讨论】:
【参考方案3】:要在第二个类中调用一个类的方法,您必须首先创建要调用的方法的该类的对象,而不是使用对象引用才能调用该方法。
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");
【讨论】:
如果它们在不同的文件中,你也要导入文件路径。【参考方案4】:您需要在主类中实例化其他类;
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;
【讨论】:
【参考方案5】:您需要了解类和对象之间的区别。来自Java tutorial:
对象是相关状态和行为的软件包
类是创建对象的蓝图或原型
您已经定义了原型,但没有对它们进行任何操作。要使用对象,您需要创建它。在 Java 中,我们使用 new
关键字。
new Date();
您需要将对象分配给与创建对象的类相同类型的变量。
Date d = new Date();
一旦你有一个对象的引用,你就可以与它进行交互
d.date("01", "12", "14");
例外是属于类并通过它引用的静态方法
public class MyDate
public static date() ...
...
MyDate.date();
如果您不知道,Java 已经有一个表示日期的类,您可能不想创建自己的。
【讨论】:
【参考方案6】: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));
【讨论】:
请添加相关信息,例如您的代码是做什么的。【参考方案7】:有一个hack。
当您创建应用的 Activity 类时,选择一个(最符合逻辑的是您的启动 Activity 类)作为“master”,并让所有其他 Activity 类扩展该 master。您在 master 中创建的任何公共方法都应该可以从任何其他活动类中调用,前提是该方法使用的变量和参数对于其他活动类也是已知的。
【讨论】:
以上是关于如何从另一个类调用方法函数?的主要内容,如果未能解决你的问题,请参考以下文章