/**
 * 内部类 ??
 *  定义在一个内部的类,被称为内部类。
 *  内部类里有类体,方法体
 *  内部类所在的类,被称为外部类。
 *  ---------------------------------
 *  ①内部类的意义
 *  	在一定程度上,起到了代码的有效保护。
 *  ②语法
 *  	class Outer{////外部类
 *  		成员变量
 *  		成员方法
 *  		class Inner{///内部类
 *				成员变量
 *  			成员方法 		
 *  		}
 *  	}
 *  ③ 类对象的创建
 *  	//创建外部类对象
 *  	Outer outer =new Outer();
 *  	//创建内部类对象
 *  	Inner inner=new Inner();//这样创建时错误的
 *  	//无法直接创建内部类对象,但是可以通过先创建外部类对象
 *  		再通过外部类对象创建内部类对象。
 *  		例如:
 *       Outer outer=new Outer();
 *       Outer.Inner inner2=new Outer().new Inner(); 
 *       或 
 *       Outer.Inner inner2=outer.new Inner();
 *       
 *  内部类引用外部类的成员变量     
 *      两种情况
 *		a.外部类的成员变量在内部类中不存在。
 *			则内部类中可以直接使用外部类的成员变量名。
 *			class Outer {
 *				String name;
 *				class Inner{
 *					public void test{
 *						name="CC";//为外部类的name;
 *					}
 *				}
 *			}
 *		b.外部类的成员变量在内部类中同时存在,则内部类想要使用外部类的成员变量,
 *			必须 外部类名.this.成员变量名  
 *			class Outer{
 *				String name;
 *				class Inner{
 *					String name;
 *					public void test(){
 *						name="cc";//为内部类的name;
 *						Outer.this.name="dd";//此时为外部类的name
 *					}
 *				}
 *			}      
 * 
 * @param args
 */
package test05;
public class InnerClass {
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Outer outer=new Outer();
		outer.name="张三";
		outer.age=18;
		outer.introduce();
		System.out.println("-------------------------------");
		Outer.Inner inner=outer.new Inner();
		inner.name="李四";
		inner.age=20;
		inner.introduce();
	}
}
class Outer{/////外部类
	String name;
	int age;
	void introduce(){
		System.out.println("name"+this.name+"age"+this.age);		
	}
	class Inner{/////内部类
		String name;
		int age;
		void introduce(){
			System.out.println("内部类姓名:"+this.name+"内部类年龄:\n"+this.age+"外部类姓名:"+Outer.this.name+"外部类年龄:"+Outer.this.age);
		}
		
	}
}
原文:http://www.cnblogs.com/wqq0402/p/6180633.html