有一个题目,小鸟百思不得其解,特请教高手,谢谢指教!
要求在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(),即无参无返回的一个方法