2017-01-15 37 views
-6

(Java中的新手)我在SO上找不到这个问题。我有项目,有两个文件(phseudo码):从其他类像本地方法使用方法?

第一个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.再次,我不想在前面加上类名来称呼它,就像这样:

a.xyz(); 
+0

*“调用这个显示错误”*什么错误? –

+2

另外:这是你的原始代码这个未知的类'字符串或者是你的shift键不可靠吗? –

+2

'new'不是变量的好名字... – luk2302

回答

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()); 
    } 
} 
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(...); 
+0

有没有办法,从'A'中导入所有函数(不是从'A'单独的方法) –

+1

@ T.Todua是的,你可以使用通配符:'import static A。*;' –

+0

最后一种方法没有工作......它显示'不能工作......不能工作......它不能发现符号方法xyz()' –

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 
    } 
} 
+1

请将它们发布在一个答案中,而不是许多答案..无论如何,谢谢,但似乎没有解决方案,'ZZZZZ'已经注册的项目类。 –