今天看视频看到匿名内部类,对匿名内部类有了些了解。以前学习的时候也于遇见过匿名内部类,当时只是觉得代码的阅读性不是很好,看完视频发现,其实用处也不少。
使用匿名内部类可以使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。
对于新手,总是在接受新的知识,大多时候不知道在什么情况下使用,于是就查阅了一些资料。贴出来:
如果满足下面的一些条件,使用匿名内部类是比较合适的:
1.只用到类的一个实例。
2.类在定义后马上用到。
3.类非常小(SUN推荐是在4行代码以下)
4.给类命名并不会导致你的代码更容易被理解。
在使用匿名内部类时,要记住以下几个原则:
1.匿名内部类不能有构造方法。
2.匿名内部类不能定义任何静态成员、方法和类。
3.匿名内部类不能是public,protected,private,static。
4.只能创建匿名内部类的一个实例。
一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
匿名内部类的两种实现方式:
1.继承一个类,重写其方法;
2.实现一个接口(可以是多个),实现其方法
在这里贴出一个继承类的例题:
public class TestAnonymousInterClass{
public static void main(String args[]){
TestAnonymousInterClass test=new TestAnonymousInterClass();
test.show();
}
//在这个方法中构造了一个匿名内部类
private void show(){
Out anonyInter=new Out(){// 获取匿名内部类实例
void show(){//重写父类的方法
System.out.println("this is Anonymous InterClass showing.");
}
};
anonyInter.show();// 调用其方法
}
}
Test.function().method();题眼
代码如下:
interface inter{
void method();
}
class Test{
static inter function()
{
return new inter(){
public void method()
{
System.out.println("内部匿名类实现的方法");
}
};
}
}
public class InnerClassDemo{
public static void main(String args[]){
Test.function().method();
}
}