假设我有ClassOne和ClassTwo。
ClassTwo有一个方法
public static void helloWorld() {
do something();
};
通常我会从ClassOne中调用ClassTwo中的方法helloWorld,如下所示:
ClassTwo classTwo = new ClassTwo ();
classTwo.helloWorld();
但我也可以这样做:
ClassTwo.helloWorld();
一种方式比另一种更好吗?如果是这样,为什么?
我几乎没有看到有人调用这样的方法,但这似乎是一种有效的方法。
答案 0 :(得分:2)
如果方法定义为static
,则应使用类引用调用 ,您可以使用对象引用调用它,但它不是首选的,也不是必需的。
如果方法不是静态的,而只是它的实例方法,那么必须使用对象引用来调用它。
Intance方法和字段属于特定对象。您需要一个对象来访问实例方法和字段。使用类引用无法访问非静态方法。
静态方法属于该类。该类的所有对象都共享该方法的常见行为。静态方法无法重写。可以通过类引用访问它们。
要定义静态方法,您可以使用static
关键字。
答案 1 :(得分:1)
将ClassTwo方法更改为static,
public static void helloWorld() {
do something();
};
现在你可以这样打电话:
ClassTwo.helloWorld();
答案 2 :(得分:1)
ClassTwo.helloWorld()
是一种静态方法。此版本只能使用ClassTwo
的静态变量;它不能使用任何实例变量。如果方法不需要实例变量,则应使用静态版本。
如果方法需要使用实例变量,则显然需要使用实例方法。