使用其他类的方法,如本机方法?

时间:2017-01-15 15:34:28

标签: java

(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();

3 个答案:

答案 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 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
    }
}