Java 如何从另一个类调用方法函数?

Java 如何从另一个类调用方法函数?,java,bluej,Java,Bluej,我正在编写一个java项目,它有三个不同的类。这就是我到目前为止所拥有的。我只想知道如何将一个方法函数从另一个类调用到另一个类。我已经写了2节课了。我完成了“日期”和“温度”课程;现在我试着把这两个类称为“天气记录”类。我不确定我的解释是否正确 public class WeatherRecord //implements Record { private String TemperatureRangetoday; private String TemperatureRange

我正在编写一个java项目,它有三个不同的类。这就是我到目前为止所拥有的。我只想知道如何将一个方法函数从另一个类调用到另一个类。我已经写了2节课了。我完成了“日期”和“温度”课程;现在我试着把这两个类称为“天气记录”类。我不确定我的解释是否正确

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;

    }
}
还有一节课

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;

    }
}

您需要对包含要调用的方法的类的引用。假设我们有两个类,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
}
public class B
{
    public void doSomething()
    {
        System.out.println("Look, I'm doing something in class B!");
    }
}
B、 其中包含doSomething()方法,如下所示:

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
}
public class B
{
    public void doSomething()
    {
        System.out.println("Look, I'm doing something in class B!");
    }
}

您需要实例化主类中的其他类

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中,我们使用
new
关键字

新日期()

您需要将该对象指定给与创建该对象的类类型相同的变量

dated=新日期()

一旦有了对象的引用,就可以与之交互

d.date(“01”、“12”、“14”)

例外情况是属于类并通过类引用的静态方法

公共类MyDate{
公共静态日期(){…}
}
...
MyDate.date();

如果您不知道,Java已经有了一个表示日期的类,您可能不想创建自己的类。

在类中
天气记录


如果类位于不同的包中,请首先导入该类,否则不需要此语句

Import <path>.ClassName


但在代码中,不需要创建对象来调用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 and 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"); 
}
导入;
我的主要java程序:
进口法;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描器n=新扫描器(System.in);
INTA、b、c;
双区,s;
系统输出打印(“输入第一面->”;
a=n.nextInt();
系统输出打印(“输入第二面->”;
b=n.nextInt();
系统输出打印(“进入第三面->”;
c=n.nextInt();
s=(a+b+c)/2.0;
面积=数学sqrt(s*(s-a)*(s-b)*(s-c));
System.out.println(“面积为=”+面积);
//阶乘函数包含在类方法中
系统输出打印(方法阶乘(a));
}
}

在这方面,我认为他不应该使用静态方法,因为他正在创建Date和TemperatureRange的实例。静态方法将意味着它们将属于它们所在的类,而不是实例。我怀疑他在试图从主方法中调用非静态方法时遇到了一些问题。我不知道我的例子是否太笼统,我应该专门为他的代码定制它,但我总是担心填鸭式的输入……这是被称为依赖注入的设计模式吗?或者这是完全不相关的吗?@ZaidHumayun我给出的代码演示了一个简单的依赖关系。依赖项注入采用几种不同的形式,但在本例中,涉及将对现有类B的引用传递给类a。例如,如果类a具有构造函数
public a(B instanceOfB){this.B=instanceOfB}
。术语
injection
表示将某个对象(在本例中为对象引用)推入另一个对象(另一个对象)。如果它们位于不同的文件中,您也必须导入文件路径。请添加相关信息,例如代码的作用。