Java内部类

简介:

内部类(inner class):定义在还有一个类中的类。

为什么须要使用内部类呢?原因有二:

一、内部类方法能够訪问该类定义所在作用域中的数据。包含私有的数据。

二、当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比較便捷。

对于原因一:

看以下样例,通过凝视一目了然:

public class OuterClass {
	private String outer = "OUTER";
	
	public void test(){
		InnerClass inner = new InnerClass();//同一般类一样。先创建类对象
		//补全:OuterClass.InnerClass inner = this.new InnerClass();
		inner.test();//调用方法同一般类一样
	}

	class InnerClass implements ActionListener{
		String inner = outer;//就如类的方法一样。可直接訪问类外部域
		
		public void test(){
			System.out.println("TEST");
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			String s = OuterClass.this.outer;
			//OuterClass.this 表示外围类引用,否则默认隐式參数是this(内部类的引用)
		}
	}
}

从上面样例可看出,内部类也没什么特别的。就像一个普通的方法,只是它是一个类而已。还能够在同一包下的其它类中通过new OuterClass().new InnerClass()得到此InnerClass对象,这不和调用类的方法一样吗。

对于原因二:

见下图中的代码:


当中选中的代码段可被以下的actionListener取代。匿名即不须要actionListener这种命名,直接new一个对象当作方法的參数就可以。




本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5378460.html,如需转载请自行联系原作者  

相关文章
|
Java 编译器
【Java】内部类
【Java】内部类
110 1
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
137 5
|
Java
Java进阶之内部类
【7月更文挑战第13天】Java内部类增进代码组织与封装,允许直接访问外部类成员,包括私有成员。主要有四种类型:成员、静态、局部和匿名内部类。匿名内部类常用于一次性实现接口或扩展类。内部类可隐藏实现细节,减少命名冲突,并在特定上下文中定义辅助类。示例展示了静态和非静态内部类如何在Shape类中封装Circle和Rectangle。使用内部类能提升代码可读性,但可能增加复杂性。
141 6
|
设计模式 Java 编译器
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
|
Java
一篇文章讲明白Java中内部类详解—匿名内部类
一篇文章讲明白Java中内部类详解—匿名内部类
273 2
【Java】内部类、枚举、泛型
【Java】内部类、枚举、泛型
138 0
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
92 2
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
121 1
|
Java
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
272 3