public class TestAnonymous {
//匿名内部类就是重写父类或接口的方法。
//内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到
// 匿名内部类是没有名字的,所以我们没办法获得其类型,而只能把它当作超类或接口类型来使用。
/*匿名类的实现方式:
1:继承一个类,重写其方法
2:实现一个接口,可以是多个
*/
/*
1: 匿名内部类的注意事项:注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。
2:在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
·静态内部类只能访问外部类的静态变量或静态方法。
*/
/*
Java的内部类和C++中的嵌套类有本质的不同:
C++的嵌套类没有指向包装类的句柄。仅仅表达一个封装的概念;
但是Java的内部类不同,它可以访问包装类的成员(这表示它拥有指向包装类的句柄)
*/
public static void main(String[] args) {
TestAnonymous testAnonymousClass=new TestAnonymous();
testAnonymousClass.show();
}
//在这个方法中构造了一个匿名内部类
private void show(){
Out anony=new Out(){ // 获取匿名内部类实例
void show(){ //重写父类的方法
System.out.println("this is Anonymous InterClass showing.");
}
};
anony.show();// 调用其方法
}
}
// 已有类Out;匿名内部类通过重写其方法获得另外的实现
class Out{
void show(){
System.out.println("this is Out showing.");
}
}
java中的匿名类
最新推荐文章于 2019-02-12 21:28:09 发布