如何在java中调用方法?

时间:2010-09-14 23:24:03

标签: java methods

如何在java中调用一个方法,该方法位于同一个包的另一个类中? 我所知道的是,使用一个对象我们可以从另一个类调用一个方法。 有没有其他方法可以调用不同类的方法?

8 个答案:

答案 0 :(得分:10)

创建B类实例:

B b=new B();
b.method();

或在B类中定义静态方法:

class B
{
 static void staticMethod();
}

并将其称为:

B.staticMethod();

答案 1 :(得分:4)

方法是对象方法类方法

对象方法:它适用于对象。你必须使用一个实例:

instance.method(args...);

类方法:它适用于一个类。它没有隐式实例。你必须使用这个类本身。它更像是程序编程。

ClassWithStaticMethod.method(args...);

<强>反射

通过反射,您可以通过编程方式访问方法,无论是对象还是类方法。

实例方法:methodRef.invoke(instance, args...); 类方法:methodRef.invoke(null, args...);

答案 2 :(得分:3)

如果将方法定义为静态,则可以在不首先实例化类的情况下使用它,但是您也没有可用的对象变量。

public class Foo {
   public static String Bar() {
      return "bla";
   }
}

在这种情况下,您可以使用Foo.Bar()调用它。

答案 3 :(得分:2)

来自Fred Swartz(fredosaurus)的笔记

有两种方法。

  • 实例方法与对象关联,并使用该对象的实例变量。这是默认设置。

  • 静态方法不使用它们所定义的类的任何对象的实例变量。如果您将方法定义为静态,编译器将给您一个粗鲁的消息您尝试访问任何实例变量。您可以访问静态变量,但除常量外,这是不常见的。静态方法通常从参数中获取所有数据并从这些参数计算某些内容,而不引用变量。这是进行某种通用计算的典型方法。一个很好的例子是预定义的Math类中的许多实用方法。

限定静态电话

从定义类外部,通过在前面添加一个对象来调用实例方法,然后将该对象作为隐式参数传递给实例方法,例如inputTF.setText("");

静态方法通过在其前面加上类名来调用,例如Math.max(i,j);。奇怪的是,它也可以使用一个对象进行限定,该对象将被忽略,但将使用该对象的类。

实施例

这是一种典型的静态方法:

class MyUtils {
    . . .
    //================================================= mean
    public static double mean(int[] p) {
        int sum = 0;  // sum of all the elements
        for (int i=0; i<p.length; i++) {
            sum += p[i];
        }
        return ((double)sum) / p.length;
    }//endmethod mean
    . . .
}

此方法使用或更改的唯一数据来自参数(当然还有局部变量)。

为什么要声明方法static

如果上述mean()方法没有被声明为静态,只要它是从同一个类中调用的,那么它也可以正常工作。如果从类外部调用并且它没有被声明为静态,则必须使用对象进行限定(无用)。即使在类中使用,也有充分的理由将方法定义为静态。

  • 文档。任何人看到方法是静态的都知道如何调用它(见下文)。类似地,任何查看代码的程序员都知道静态方法不能与实例变量交互,这使得读取和调试更容易。
  • 效率。编译器通常会生成稍微更高效的代码,因为不必将隐式对象参数传递给方法。

调用静态方法

有两种情况。

从同一类中调用

只需编写静态方法名称即可。例如:

// Called from inside the MyUtils class
double avgAtt = mean(attendance);

从课堂外打电话

如果从另一个类调用方法(静态或实例),则必须在方法名称之前指定一些方法,以指定定义方法的类。例如,方法,这是方法将访问的对象。对于静态方法,应指定类名。例如:

// Called from outside the MyUtils class.
double avgAtt = MyUtils.mean(attendance); 

如果在它之前指定了一个对象,则将忽略该对象值,并使用该对象的类。

访问静态变量

虽然static方法无法访问实例变量,但它可以访问static个变量。静态变量的常见用法是定义&#34;常量&#34;。 Java库中的示例是Math.PIColor.RED。他们符合班级名称,因此您知道他们是static。任何方法static都可以访问static变量。实例变量只能通过实例方法访问。

替代呼叫

有点特殊但不推荐的是,可以使用类的对象而不是类名来访问静态方法。这很糟糕,因为它会产生使用对象中的某些实例变量的印象,但事实并非如此。

答案 4 :(得分:1)

如果它是静态方法,您可以使用类名代替对象来调用它。

答案 5 :(得分:1)

您可以创建静态方法,也可以将其他类用作类的成员,在构造函数中调用该函数。

public class aClass {
      private SomeOtherClass oc;
      public class aClass( SomeOtherClass otherClass) {
         oc = otherClass;
      }

      public callOtherClassMethod() {
         oc.otherClassMethod();
       }
    }

答案 6 :(得分:0)

以这种格式进行:

classmehodisin.methodname();

例如:

MyClass1.clearscreen();

我希望这有帮助 注意:该方法必须是静态的。

答案 7 :(得分:-1)

通过调用方法

public class a 
{
    void sum(int i,int k)
    {
        System.out.println("THe sum of the number="+(i+k));
    }
}
class b
{
    public static void main(String[] args)
    {
        a vc=new a();
        vc.sum(10 , 20);
    }
}