Java 直接从另一个类访问方法
我希望能够直接使用另一个类中的方法Java 直接从另一个类访问方法,java,class,methods,Java,Class,Methods,我希望能够直接使用另一个类中的方法 import package.dialog; public class Class1 { public static void main(String[] args) { dialog.dialog("This is a dialog"); } } import javax.swing.JOptionPane public class dialog { public static void dialog(Strin
import package.dialog;
public class Class1 {
public static void main(String[] args) {
dialog.dialog("This is a dialog");
}
}
import javax.swing.JOptionPane
public class dialog {
public static void dialog(String message) {
JOptionPane.showMessageDialog(null, message);
}
}
这段代码的工作原理与预期完全相同,但正如您所看到的,我使用的是dialog.dialog()。我想知道是否有直接使用dialog()的方法?不,这是不可能的。考虑以下情况:
import package.dialog;
public class Class1 {
public static void main(String[] args) {
// Omit the class and call the dialog method "directly"
dialog("This is a dialog");
}
}
import javax.swing.JOptionPane
public class dialog {
public static void dialog(String message) {
JOptionPane.showMessageDialog(null, message);
}
}
public class SomeOtherClass {
public static void dialog(String message) {
// Perform some action
}
}
编译器如何知道要调用哪一个方法?对话框
类中的对话框
方法,或其他类中的对话框
方法
编程语言通常都经过精心设计,以避免出现这种歧义
一个臭名昭著的设计不佳的例子(以及你所建议的潜在困难)是C++和其他语言的多重继承,这是一个模糊的结果,与你提出的非常相似。事实上,这是C#和Java禁止多重继承的主要原因之一。重点是这并不是你想要的语言
最终,这将使代码更难阅读,并且可能会模棱两可,只需节省一点输入。请记住,为了便于阅读,最好尽可能明确说明您的意图。首先,您的示例无法编译,因为您无法将包命名为“package”。“package”是一个Java关键字,不允许用作标识符
所以我们称之为“我的包裹”。根据Java惯例,您应该使用大写字母命名类。因此,在下面的示例中,我将使用Dialog
而不是Dialog
作为类名
然后,可以使用静态导入调用方法dialog()
,而不使用前缀
import static mypackage.Dialog.*;
public class Class1 {
public static void main(String[] args) {
dialog("This is dialog");
}
}
即使dialog.dialog不应该工作,您的方法也不是静态的。但是您不能。您的对话框
方法不是静态
,此代码不应该工作。另外,来自dialog
包中的dialog
类的dialog
方法非常容易产生误导。不,您不能直接使用dialog()
方法。因为在没有提及或指向正确的类的情况下,编译器应该如何知道它应该调用哪个dialog()
方法?“这段代码按照它应该调用的方式工作”-这段代码会产生编译器错误。如果这是预期的结果,那么,是的,您可以通过直接使用dialog()
来实现相同的结果。因为java中的所有方法都必须具有类绑定。因此,您不能定义没有类的方法。你没有C++的全局方法。