作为一个包内的内部类,它只在包内使用,所以你只能在同一个包里的其他类中使用,
而同一个包内的类可以互相访问public以及freindly的方法以及属性。

解决方案 »

  1.   

    回复人: Dongluo(Gavin Luo) ( ) 信誉:98  2004-04-22 12:52:00  得分:0 
     
     
      作为一个包内的内部类,它只在包内使用,所以你只能在同一个包里的其他类中使用,
    而同一个包内的类可以互相访问public以及freindly的方法以及属性。
      
    ====================================只有类的内部类的说法,没有包内的内部类这样的说法。你错了。
      

  2.   

    外部类要调用内部类的方法,必须在外部类先声明一个内部类成员,
    然后用这个成员调用内部类对应的方法!
    public class OutSideClass{
         InnerClass inner;
         public OutSideClass(){
              inner=new InnerClass();
              //call inner class method
              inner.test();
         }     class InnerClass{
            public void test(){
                //do something
            }
         }
    }
      

  3.   

    就好象System.in 和System.out的用法一样
      

  4.   

    小弟试了试:public class TestA{
    public class C{
    public void doit(){
    System.out.println("C");
    }

    /*此doit2静态方法也不能通过编译
     *
    public static void doit2(){
    System.out.println("C");
    }

    */

    }
    static class B{
    public void doit(){
    System.out.println("B");
    }
    }

    public static void main(String[] args){
    System.out.println("仅供测试TestA");
    TestA ta=new TestA();
    TestA.B tb=new TestA.B();
    tb.doit();//可以工作

    //TestA&C tab=new TestA&C();//不能编译
    //TestA.C tab=new TestA.C();//不能编译
    //ta.C.doit();
    //ta.C.doit2();

    System.out.println("--------");
    P p=new P();
    p.dd();
    }
    }
    class P{
    public void dd(){
    System.out.println("仅供测试P");
    TestA tta=new TestA();
    TestA.B tb=new TestA.B();
    tb.doit();//可以工作


    }
    }
      

  5.   

    1.内部类不能有静态方法
    2.TestA.C tab=new TestA.C();应改为TestA.C tab=ta.new C();
    3.调用应为 tab.doit();