外部类要调用内部类的方法,必须在外部类先声明一个内部类成员, 然后用这个成员调用内部类对应的方法! public class OutSideClass{ InnerClass inner; public OutSideClass(){ inner=new InnerClass(); //call inner class method inner.test(); } class InnerClass{ public void test(){ //do something } } }
就好象System.in 和System.out的用法一样
小弟试了试: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以及freindly的方法以及属性。
====================================只有类的内部类的说法,没有包内的内部类这样的说法。你错了。
然后用这个成员调用内部类对应的方法!
public class OutSideClass{
InnerClass inner;
public OutSideClass(){
inner=new InnerClass();
//call inner class method
inner.test();
} class InnerClass{
public void test(){
//do something
}
}
}
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();//可以工作
}
}
2.TestA.C tab=new TestA.C();应改为TestA.C tab=ta.new C();
3.调用应为 tab.doit();