课时129:匿名内部类
摘要:
1. 匿名内部类的定义
2. 匿名内部类的形式
3. 匿名类的基本处理形式
01.匿名内部类
1.1匿名内部类的定义
匿名内部类是一种简化的内部类的处理形式,其主要是在抽象类和接口的子类上使用的。
1.2范例:观察一个基本的程序结构
interface IMessage { public void send (String str) ; } class MessageImpl implements IMessage { public void send(string str) { System.out.println (str) ; } } public class JavaDemo { public static void main(String args[]) { IMessage msg = new MessageImp1 () ; msg.send("www .mldn .cn" ) ; } }
02.匿名内部类的形式
2.1定义
如果说现在 IMessage 接口中的 MessageImpl 子类只使用唯一的一次,那么是否还有必要将其定义为单独的类。在这个要求下就发现这个时候定义的子类是有些多余了,所以就可以利用匿名内部类的形式来解决此问题。
2.2范例:使用匿名内部类
interface IMessage { public void send(string str) ; } public class JavaDemo { public static void main(string args []) { IMessage msg = new IMessage() { //匿名内部类 public void send(String str) { System.out.println(str); } } ; msg.send("www .mldn .cn" ) ; } }
03.匿名类的基本处理形式
3.1匿名内部类的实现
为了更加方便的体现出匿名,内部类的使用可以利用静态方法做一个内部的匿名内部类实现。
3.2范例:在接口中直接定义匿名内部类
interface IMessage { public void send ( string str) ; public static IMessage getInstance() { return new IMessage() { public void send (string str) { System.out.println(str) ; } } ; } } public class JavaDemo { public static void main(string args [] ) { IMessage.qetInstance().send("www.mldn.cn" ) ; } }
很多时候可以这样去使用匿名内部类,与内部类相比匿名内部类只是一个没有名字的只能使用一次的,并且结构固定的一个子类操作。这是匿名类的基本处理方式。