天天看点

Java学习--匿名内部类

在Java中我们学过这样一个类--内部类,就是将一个类定义在另一个类的里面,这个类就叫做内部类或者嵌套类。它可以直接访问外部类中的成员,包括私有成员。外部类要想访问内部类,就必须建立内部类对象。内部类也可以定义为匿名的,即就是内部类的简写形式。定义匿名内部类的前提就是必须要有一个继承类或者可以实现的接口。例如:

class InnerClassDemo
{
	public static void main(String[] args)
	{
		new Outer().show(7);
		//new Outer().show(8);
	}
	
}

abstract class absDemo
{
	abstract void Display();
}

class Outer
{
	int x=3;
	void show(final int a)
	{	
		final int y=8;
		class Inner
		{
			void function()
			{
				System.out.println(a);
				
			}
		}
		
		new Inner().function();
		
		new absDemo()
		{
			void Display()
			{
				System.out.println("x=="+x);
			}
		
		}.Display();
	
	}
	

}
           

我们在类Outer中定义了一个匿名内部类,它继承自抽象类absDemo。这样做就简化了操作。

假如现在我们没有可以继承的父类或者可以实现的接口,我们怎么定义一个匿名内部类呢?大家都知道,在Java中,Object类是所有类的父类,即所有类都是继承自Object类,那么我们就可以采用下面的方法定义一个匿名内部类:

class InnerClassDemo3
{
	public static void main(String[] args)
	{
				
		//没有继承类或者接口时使用
		new Object()
		{
			public void function()
			{
				System.out.println("aaaa");
			}
		
		}.function();

	}
}
           

这样我们就定义了一个继承自Object类 的匿名内部类。