Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果没有非静态类成员,是否必须使类成为静态的?_Java_Variables_Methods_Static_Instance - Fatal编程技术网

Java 如果没有非静态类成员,是否必须使类成为静态的?

Java 如果没有非静态类成员,是否必须使类成为静态的?,java,variables,methods,static,instance,Java,Variables,Methods,Static,Instance,如果一个类没有任何非静态类成员,那么将该类中的所有方法都设置为静态是一种好的做法吗? 就像一些没有任何实例变量的管理器一样 如果类永远不会有实例,那么所有方法都应该是静态的,这将是调用它们的唯一方法(您不能执行myInst.myFunc(),因为myInst不存在) 这可能与: Math示例是一个很好的例子,如果不得不这样做,会让人感到困惑 Math myCalculator = new Math() myCalculator.multiply(x,y); 除非myCalculator可能对P

如果一个类没有任何非静态类成员,那么将该类中的所有方法都设置为静态是一种好的做法吗?
就像一些没有任何实例变量的管理器一样

如果类永远不会有实例,那么所有方法都应该是静态的,这将是调用它们的唯一方法(您不能执行
myInst.myFunc()
,因为
myInst
不存在)

这可能与:

Math
示例是一个很好的例子,如果不得不这样做,会让人感到困惑

Math myCalculator = new Math()
myCalculator.multiply(x,y);
除非
myCalculator
可能对PI、E等有不同的定义

简而言之,是的,没有非静态成员的类应该只有静态方法

编辑:安迪·托马斯提出了一个很好的观点

您的
数学
可能会实现
乘法
接口,因为它可以将两个东西相乘。同时,我的
乘法器和adder
类(我知道这是一个糟糕的类,但作为示例)也实现了
乘法器。在这种情况下,方法必须是非静态的,您必须实例化一个实例,以便将它传递给将使用它的任何人


接口逻辑一直在我的脑海中(正如一位教授所教):方钉,圆孔。如果你想通过这个圆孔,你必须是圆的。如果你不存在,你就不是圆的,也不能穿过洞。

事实上,我认为最好不要让这样一个类的所有方法都是静态的。但我认为这是一个意见问题。如果有人持相反的观点,我也不会感到太惊讶。请注意,静态方法不能实现接口。您可能希望您的类实现一个接口,即使它缺少实例字段。@Andy说得好。i、 e.java.lang.Runnable接口,以便可以在线程上执行实例。