我最近(4天前)开始在JAVA编程。我有一些来自C ++和PHP的整体编程经验。我的问题是:我们可以在JAVA中实现一个在所有类中都可用的函数吗?我正在考虑一些全局日志记录功能,我需要在几个地方调用(日志事件,错误等)。
想象一下,我有两个类,A和B.我需要在两个类中调用日志功能,但我不想复制整个函数体(我相信可怕的东西),我想严格地称它为(不创建另一个类,实例化它,然后从实例调用),如logEvent(someVariable)
。所以我应该使用一个抽象类C,A和B将扩展,但它们已经是其他类(内置)的扩展。由于不允许多重继承(是吗?),我需要做一些技巧。辛格尔顿也不讨好我。在PHP或C ++中,我只是创建带有函数体的单独文件,然后包含它。
以下是我想要使用它的方法:
public class A extends SomeClass {
String error = "Error from class A";
logEvent(error);
}
public class B extends SomeOtherClass {
String error = "Error from class B";
logEvent(error);
}
答案 0 :(得分:31)
在任何类中放置一个静态方法(它可以是一个utils类,或者其他类),然后像这样调用它:ClassName.functionName()
静态方法属于类,而不是类的实例,因此您不需要实例化类来访问方法
但Java中的所有内容都必须在一个类中,因此如果没有类名,则无法访问它。
答案 1 :(得分:12)
你应该使用静态方法:
package xxx;
public class Util{
public static void logEvent(String error){
...
}
}
并导入静态:
import static xxx.Util.*;
public class A extends SomeClass {
String error = "Error from class A";
logEvent(error);
}
答案 2 :(得分:0)
您可以使用静态方法。
使用静态方法定义类:
public class Util{
public static void logEvent(String error){
...
}
}
然后,您可以像这样使用静态方法:
public class A extends SomeClass {
String error = "Error from class A";
Util.logEvent(error);
}
您可以在此处了解有关静态方法的更多信息,http://www.leepoint.net/notes-java/flow/methods/50static-methods.html