Java内部类的使用

在java中经常会使用到内部类,它的实例化语法比较特别,下面例子涉及到普通内部类和静态内部类,程序中已经加上注释,希望对初学者有所帮助。

public class InnerClassTest {
	String name = "public String name";
	static String name2 = "static String name2";
	//int age;
	public class InnerA{ //成员内部类,表达倚赖于外部类而存在的 
		String name2;
        //private InnerClassTest out;
		public InnerA(/*InnerClassTest out*/){ //编译器会自动加上
	    //this.out = out;
	    }
		public void mA(){
			
			System.out.println("这是成员内部类");
			
			System.out.println("name="+ InnerClassTest.this.name);//InnerClassTest.this.name 这种方式去访问,InnerClassTest.name 只能访问静态成员变量
			System.out.println("name2="+ InnerClassTest.name2);
			
		}
	}

	public static  class InnerB{ //主选静态内部类,与外部类没有太多关西;
		String name2;
		public void mB(){
			System.out.println("这是成员 静态内部类");
			//System.out.println("name="+ name); //静态内部类不能访问外部非静态内部成员
			System.out.println("name2="+ InnerClassTest.name2);
			
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
         InnerClassTest out = new InnerClassTest();
         InnerClassTest.InnerA inn = out.new InnerA();//奇特的语法,想要生成一个成员内部类,之前一定要生成一个成员外部类,
         //InnerClassTest.InnerA inn = new OuterA.InnerA(out);//编译会这样改写
         inn.mA();
         InnerClassTest.InnerB innb = new InnerClassTest.InnerB();
         innb.mB();
	}

}


 

你可能感兴趣的:(Java内部类的使用)