如何在java中调用一个方法?

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

创build一个B类的实例:

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

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

 class B { static void staticMethod(); } 

并像这样调用它:

 B.staticMethod(); 

方法是对象方法类方法

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

 instance.method(args...); 

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

 ClassWithStaticMethod.method(args...); 

reflection

通过reflection,您可以使用API​​以编程方式访问方法,无论是对象方法还是类方法。

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

如果将方法定义为静态方法,则可以在不初始化类的情况下使用该方法,但是也可以不使用对象variables。

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

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

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

你既可以创build一个静态方法,也可以使用另一个类作为调用该构造函数的类的成员。

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

有两种types的方法。

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

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

限定静态呼叫

从定义类的外部,实例方法通过在对象前加上一个对象来调用,然后将该对象作为隐式parameter passing给实例方法,例如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 . . . } 

此方法使用或更改的唯一数据来自参数(当然是局部variables)。

为什么声明一个方法是static

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

  • 文档。 任何人看到一个方法是静态的将知道如何调用它(见下文)。 同样,任何查看代码的程序员都会知道静态方法不能与实例variables交互,这使得阅读和debugging变得更容易。
  • 效率。 编译器通常会生成稍微高效的代码,因为不需要将隐式对象parameter passing给该方法。

调用静态方法

有两种情况。

从同一个class级中调用

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

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

从课外打来

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

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

如果之前指定了对象,则对象值将被忽略,对象的类将被使用。

访问静态variables

虽然static方法不能访问实例variables,但可以访问staticvariables。 静态variables的常见用法是定义“常量”。 来自Java库的示例是Math.PIColor.RED 。 他们是合格的类名,所以你知道他们是static 。 任何方法, static或不可以,都可以访问staticvariables。 实例variables只能由实例方法访问。

备用电话

有什么特别的,不推荐的是,可以使用一个类的对象而不是类名来访问静态方法。 这是不好的,因为它造成了对象中的一些实例variables被使用的印象,但事实并非如此。

以这种格式来做:

classmehodisin.methodname();

例如:

MyClass1.clearscreen();

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