Rom*_*man 23 java oop methods class instantiation
我有一个有几个方法的类,这些方法中没有构造函数.
所以,我想知道是否可以在没有创建类实例的情况下调用类的方法.
例如,我可以这样做:
NameOfClass.doMethod(x1,x2,...,xn)
Run Code Online (Sandbox Code Playgroud)
总的来说,我不明白为什么它不可能.我只是调用一个函数来做某事(或返回一些值).如果可能,如果方法为类的私有变量设置值,将会发生什么.我怎样才能达到这个值?以同样的方式?
NameOfClass.nameOfVariable
Run Code Online (Sandbox Code Playgroud)
正如许多人所指出的:只有在方法是静态的情况下才有可能.也许一些OOP背景是有序的:一个方法应该总是属于一个类.那么在没有类实例的情况下调用方法有什么用呢?在完美的OO世界中,没有任何理由这样做.许多与静态方法有关的用例都在谈论为您的类分配某种身份.虽然这在编程领域是完全合理的,但在面向对象设计方面并不十分有说服力.
当我们在一个不完美的世界中编程时,通常会有一个用于"自由函数"的用例(例如Java或C++实现sort()的方式).由于Java没有直接支持自由函数类,只使用静态"方法"来表达那些语义,并且类包装器提供了一个"命名空间".您如何看待这种解决方法,如果您将其视为语言设计中的一个缺陷,那么IMO就是一个意见问题.
小智 5
1)是的,您可以使用类的方法,而无需通过使用关键字"静态"创建该类的实例或对象.
2)如果您将方法声明为"静态",则可以通过以下方式调用此方法:
*ClassName.MethodName()*
Run Code Online (Sandbox Code Playgroud)
3)例如
class Hello {
public static void print()
{
System.out.println("HelloStatic");
}
}
class MainMethod {
public static void main(String args[])
{
// calling static method
Hello.print();
}
}
Run Code Online (Sandbox Code Playgroud)
4)上述程序的输出为:HelloStatic