(Java中的新手)我在SO上找不到这个问题。我有项目,有两个文件(伪代码):
第一个Java文件(类)
public class A {
public void xyz() { System.out.println("hello");}
}
第二个Java文件(类)
public class B Extends ZZZZZ {
public void callme() {
xyz(); // <----------------- I want to call in this way, but It cant be done like this.
}
}
如何使xyz()
成功调用(就好像在b()
类本地定义!!)。
P.S。再一次,我不想在前面用classname来调用它,就像这样:
a.xyz();
答案 0 :(得分:3)
实例方法的整个概念,例如xyz
,就是你在方法中使用A
实例的状态,而不必将该实例作为参数传递这样:
... String xyz(A thisInstance, ...) {...}
相反,您使用:
A thisInstance = ...;
thisInstance.xyz(...);
这就是为什么你需要一个A
的实例,因为它实际上是函数的一个参数。
但是,如果您不需要 A
的实例,则可以将该方法设为静态:
static String xyz(...) {...}
然后你可以在不传递A
的实例的情况下调用它:
A.xyz(...);
您可以使用静态导入,这样就不必编写A
:
import static A.xyz;
...
xyz(...);
答案 1 :(得分:1)
好几种可能性:
A a=new A();
a.xyz();
(你不想要这个)
public class B extends A {...}
和
public class A extends ZZZZZ{...}
所以你仍然可以扩展ZZZZZ;
public interface A{...}
public class B extends ZZZZZ implements A{...}
public class A{
public static void xyz()
{
System.out.println("hello");
}
}
public class B{
public void callme()
{
A.xyz());
}
}
答案 2 :(得分:0)
这会对你有帮助。
class A {
public void xyz() {
System.out.println("hello");
}
}
class ZZZZZ extends A{
}
class B extends ZZZZZ {
public void callme() {
xyz();// <----------------- calling this shows error
}
}