java基础 内部类详解

什么是内部类?

1.内部类也是一个类;

2.内部类位于其他类声明内部。

内部类的常见类型

1.成员内部类

2.局部内部类

3.匿名内部类

4.静态内部类

简单示例

 

/**
 * 外部类
 * 
 */
public class OuterClass {

	private String s = "private String from OuterClass";
	
	private String fs = "final String from OuterClass";
	
	/**
	 * 成员内部类,字面上理解就是外部类的一部分。类似外部类的属性或方法
	 * 外部类的属性和方法对于内部类都是可以访问的,包括private属性方法
	 * 调用方法 外部类名。this。属性或方法
	 */
	class PartnerClass
	{
		public void print()
		{
			System.out.println("this comes from PartnerClass and can get "+OuterClass.this.s);
			OuterClass.this.print();
		}
	}
	
	private void print()
	{
		System.out.println("private method form OuterClass");
		/**
		 * 局部内部类只可以在一定范围内被访问
		 */
		class Part
		{
			void print()
			{
				System.out.println("this comes from part class and can get "+ OuterClass.this.s);
			}
		}
		
		new Part().print();
	}
	
	interface Anonymous
	{
		void print();
	}
	
	/**
	 * 匿名内部类多为已经定义好的接口或抽象类,在需要使用的地方采取进行具体实现
	 * 同成员内部类类似
	 */
	Anonymous anyms = new Anonymous() {
		
		@Override
		public void print() {
			System.out.println("this comes from a anonymous class and can get "+OuterClass.this.fs);
			OuterClass.this.print();
		}
	};
	
	/**
	 * 静态内部类只能访问外部类的静态属性和方法
	 * 静态内部类可以通过new OuterClass。StaticClass()的方式创建静态内部类对象
	 */
	private static class StaticClass implements Anonymous
	{

		@Override
		public void print() {
			System.out.println("this comes from static inner class");
		}
		
	}
	
	public static void main(String[] args) {
		
		OuterClass outer = new OuterClass();
		/**
		 * 外部类可以创建获取内部类对象
		 * 创建方法为  new 外部类().new 内部类()
		 */
		outer.new PartnerClass().print();
		
		outer.anyms.print();
		
		StaticClass sc = new OuterClass.StaticClass();
		sc.print();
	}

}

内部类有什么用处?

1.隐藏类名和具体实现细节

2.内部类可以访问外部类的属性和方法

3.内部类可以用来实现闭包和回调

4.内部类可以用来实现多重继承

5.封装数据进行传值

 

个人内部类使用经验不多,以后有用到会补充进来

 

posted @ 2014-04-09 15:43  汤姆的猫  阅读(198)  评论(0编辑  收藏  举报