各位高人,本人有个简单的static问题,帮忙解决一下,谢谢!
public class test{
  System.out.println(MyClass.getMyClassResult(new MyClass(2)));
}class MyClass{
  int k;
  public MyClass(int k){
    this.k=k
  }
  
  public method(){ //doing something }  public static double getMyClassResult(MyClass mc){
    mc.method(); //改为 method();?
    //doing something, get a double d.
    return d;
  }
}在MyClass类中,getMyClassResult方法是静态方法,这个方法可以调用非静态方法method()吗?怎样改这个程序为好?要求getMyClassResult方法是静态方法,并调用method(). 

解决方案 »

  1.   

    谢谢!书上是这么说的。但是我测试过,可以运行的。mc.method()是没有问题的,method()就有问题。mc.method()是不是已经算new出来对象了?
      

  2.   


    mc.method 能使用是因为mc是MyClass实例的一个引用,也就是通过对象来引用的对于静态方法getMyClassResult()
    mc.getMyClassResult()和MyClass.getMyClassResult() 都成立但只能是mc.method().
      

  3.   

    mc.method()是通过对象调用的。要直接调用method()修改成static的。
      

  4.   

    谢谢!明白了mc是MyClass实例的一个引用。我现在主要关心的是getMyClassResult()方法能否调用method()方法?是不是把method()改为static就更好了?getMyClassResult()方法设计为static是因为它常用,就不知道它调用的方法是否也要设计为static的?
      

  5.   

    magicluo谢谢!MyClass是一个工具类,method()只是getMyClassResult()用到,我也觉得用静态方法常常编译时会出错,这涉及到模式设计,本人正想学一学。