2014-10-09 106 views
2

我正在写一个有三个不同类的java项目。这是迄今为止我所拥有的。我只是坚持如何从另一个类调用另一个类的方法函数。我已经写了2个班。我完成了“Date”类和“TemperatureRange”类;现在我试图将这两个类称为“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; 

    } 
} 

回答

10

你需要包含要调用该方法的类的引用。比方说,我们有两个类,A和B. B有你想从A类的调用看起来像这样的方法:

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

    b = new B(); // Creating 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!"); 
    } 
} 
+0

在那个笔记,我不认为他应该使用静态方法,因为他正在创建Date和TemperatureRange的实例。静态方法将意味着它们将属于它们所在的类,而不是实例。 – tenkii 2014-10-09 02:13:12

+0

我怀疑他遇到了一些问题,试图从他的主要方法中调用非静态方法。我不知道我的例子是否过于笼统,我应该为他的代码专门定制它,但我总是对勺子喂养保持谨慎...... – MarsAtomic 2014-10-09 02:15:13

+0

这是被称为依赖注入的设计模式吗?还是那种完全不相关的东西? – 2017-07-21 11:41:47

0

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

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

您需要了解类和对象之间的区别。 Java教程:

的对象是相关的状态和行为的软件捆绑

类是从中创建对象的蓝图或原型

您已经定义了原型但他们没有做任何事情。要使用对象,您需要创建它。在Java中,我们使用new关键字。

new Date();

您需要将对象分配给同一类型的对象是从创建类的一个变量。

Date d = new Date();

一旦有了对象的引用,你可以用它

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

例外的互动是属于类,并通过它

引用静态方法

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

... MyDate.date();

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

1

WeatherRecord类:

先导入类,如果他们是在不同的包中还有这种说法并不需要

Import <path>.ClassName 



然后,就referene或拨打你的对象,如:

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 


对对象和静态功能清晰的概念。 Click me

0

为了调用第二个类中的一个类的方法,您必须首先创建该类的对象,而不是使用可调用方法的对象引用调用您想要调用的方法。

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"); 
} 
相关问题