日期:2014-05-20  浏览次数:20710 次

小鸟请问
有一个题目,小鸟百思不得其解,特请教高手,谢谢指教!
        要求在A包中定义一个子包B,并在其中定义一个方法C,内容为显示“这是子包中的方法”这一句话。然后用一个程序去调用。可是我在后面一个程序里面定义的时候,怎么也不成功,而且错误很离奇。下面是我的代码。
        /*以下是定义B包的语句*/
C.java

package   a.b;
class   C{
      public   void   disp(String   args   []){
                System.out.println( "这是子包中的方法 ");
      }
}

        /*以下是调用程序的内容*/
d.java

import   a.b.*;
class   d{
      public   static   void   main(String   args[]){
            disp   dsp   =   new   disp();
      }
}

如果是这样写,则必然报错,无法access "disp "方法。
但是如果import   a.b.disp;或者是在前面加一句package   a.b;
就没问题。请问是为什么?

------解决方案--------------------
狂汗
首先,你没搞懂什么是类的实例化,disp dsp = new disp();这句的意思是实例化一个类名叫disp的类,但是你写的代码里哪里有disp这个类了?改成 C c = new C(); 还差不多

其次,你也没弄明白怎么通过实例调用方法,在JAVA中除了静态方法外,都只能通过 实例.方法名来调用。在实例了一个c之后,可以通过c.disp(String args [])来打印出那一句话

还有,既然只需要打印出写死的一句话,就没有必要传递一组字符串数组进去,可以把disp这个方法改成disp(),即无参无返回的一个方法