现在的位置: 首页 > 综合 > 正文

JAVA–内部类

2014年02月07日 ⁄ 综合 ⁄ 共 1206字 ⁄ 字号 评论关闭

组成:

1)成员内部类:非静态内部类,静态内部类    2)局部内部类    3)匿名内部类

用途:

1)访问外部类的所有成员(private)   2)多重继承    3)封装类型   4)编写事件驱动程序   5)回调

代码展示:

非静态内部类:

/**
	 * 实例内部类
	 */
	public class Inner {
		
		public String name = "内部类";

		public void show() {
			System.out.println("我是外部类的name:" + Outer.this.name);
			System.out.println("我是内部类的name:" + name);
		}

	}

静态内部类

/**
	 * 静态内部类
	 */
	public static class SubInner
	{
		
		
		public static String name = "asdf";
		public static void show(){
			System.out.println("内部类2显示:"+Outer.name2);
			System.out.println("内部类2显示:"+new Outer().name);
		}
	}

匿名类:需要注意的是,匿名类必须继承一个类或者借口且只能是一个

/**
 * 匿名内部类
 */
public class OuterOfAnonymous {
	
	/**
	 * Printer是一个类
	 */
	static Printer printer = new Printer(){
		
		@Override
		public void print()
		{
			System.out.println("我可以进行打印");
		}
	};
	
	public static void main(String[] args)
	{
		/**
		 * Flyable是一个接口,必须实现接口的方法
		 */
		Flyable flyable = new Flyable(){

			@Override
			public void fly() {
				System.out.println("我可以飞");
			}
			
		};
		printer.print();
		flyable.fly();
	}
	
	

}

回调:类实现了某种功能,但没有直接提供接口,调用时可以用这个类的内部类的接口实现该功能。内部类没有提供实现,调用了外部类的实现

package out;

public class Bird extends Animal {
	
	public void move() {
		System.out.println("我是小鸟可以用腿走");
	}

	static void fly()
	{
		System.out.println("我是小鸟还可以飞");
	}

	private static Flyable flyable = new Flyable()
	{

		@Override
		public void move() {
			System.out.println("调用一下回调");
			fly();
		}
		
	};
	
	public static void main(String[] args)
	{
		Bird bird = new Bird();
		bird.move();
		flyable.move();
	}
	
	

}

抱歉!评论已关闭.