在php中,您可以使用函数在全局范围内声明一个函数。
这在java中是不可能的?看起来每个函数都在类中作为方法。所以在java中一切都是OOP?没有程序代码?
答案 0 :(得分:18)
“自由浮动”功能最接近的是静态函数,您可以使用类名调用该函数,例如
。public class Foo {
public static void bar(){}
}
......其他地方
Foo.bar();
你可以为此添加一些语法糖,使它看起来像你想的那样:
import static Foo.bar;
......其他地方
bar();
答案 1 :(得分:3)
是的。但是您可以定义静态方法,这些方法最终可以充当类中包含的方法,但可以在不实例化类的实例的情况下调用。也就是说,如果您在类bar
中将方法static
定义为Foo
,则可以将其作为Foo.bar()
调用。
答案 2 :(得分:3)
没错,没有程序代码,一切都是由类定义的对象(少数原始数据类型除外)。但是,您可以使用静态方法:
public class MyClass {
public static void callMe() {
System.out.println("HEY");
}
}
public class MyOtherClass {
public void someMethod() {
MyClass.callMe();
}
}
基于JVM的语言Scala允许您创建higher-order functions,您可以将其作为值传递。
答案 3 :(得分:3)
哦,是的,OO indeed。您可以在静态方法中编写伪程序内容。
答案 4 :(得分:3)
您可以将方法静态调用,而无需创建对象
public class MyClass{
public static void m(){
...
}
}
MyClass.m();
答案 5 :(得分:3)
扩展其他人的意思,如果你有很多这样的函数,通常将它们组合在一起的类中除了静态方法之外什么都没有,通常称为“实用程序类”。我想到的第一个例子是java.lang.Math,但还有很多其他例子。名称中包含“Util”的任何类都可能遵循这种模式。
答案 6 :(得分:1)
是的,这是正确的。 Java严格来说是OOP。
答案 7 :(得分:0)
在java世界中,无论如何,所有函数都必须在类中声明。欢迎来到OO世界=)
答案 8 :(得分:0)
是的,您可以创建静态函数,呃,方法,但是您必须对它们进行硬编码。要在运行时选择回调,您必须创建一个接口(不是函数指针,过程类型或委托),然后创建一个虚假类(尽管可能是匿名的)来“实现”它。享受制作工作!
或者,享受幽默的讽刺: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
答案 9 :(得分:-1)
不要擅长OOP。你仍然可以定义一个公共静态方法,并像其他人提到的那样从任何地方调用它。