大哥们,请问一个问题,我先建了一个程序库
package haha.hoho.hehe;
class Wei {
public void w() {
System.out.println("非公共的那个类");
}
}
public class He {
public void h() {
 System.out.println("我来也哈哈哈哈哈哈哈哈");
}
}然后我在DOS环境下用javac -d E:\ He.java    编译通过了。
然后我建立了另一个.java文件,里面是:
import haha.hoho.hehe.*;
public class A {
public static void main(String[] args) {
          Wei i=new Wei();
  i.w();
}
}
然后我在DOS环境下用javac A.java   编译结果报错,请问是怎么回事,应该怎么解决呢?

解决方案 »

  1.   

    import haha.hoho.hehe.*;
    只能导入haha.hoho.hehe包中的public类 class Wei不能导入 所以在 Wei i=new Wei();时找不到Wei类而报错
      

  2.   

    在不同的包中,如果你的类声明没有显式声明为public类型的,也就是默认类型时,是不可以互相访问的,即使是子类也不可以。不同包中的互相访问,对于非子类只能访问public类型的,对于子类可以访问默认类型的类和方法以及protected类型的类和方法。
      

  3.   

    要解决有三种方法
    第一,把他们放到同一个类中
    第二,把类A声明为类Wei的子类
    第三,在公共类He中定义一个public类型的方法来访问A
      

  4.   

    按照 失魂兄弟所说的,也是我一直在想问,但一直大哥解释清楚的问题:
    每个.java文件只能有一个是public class,那我同一个.java文件中的其他class在编译以后,又怎么能在另一个.java中被访问呢,这也是我迟迟没有结贴的原因.