先回答:抽象类和接口都是不能被抽象类实例化化的!
匿名类正顾名思义,在java中没有名字标识的类当然编译后还是会安排一个名字的,其名称由Java编译器给出一般是形如:外部类名称+$+匿名类顺序,没有名称也就是其他地方就不能引用不能抽象类实例化化,只用一次当然也就不能有构造器。
Java语言规范是这么描述匿名类的:
匿名类的声明是由java编译器自动派生自一个类抽象类实例化创建表达式
匿名类永远不能是抽象的。
匿名类总是隐式的final
匿名类总是一个内部类;并且不能是static的。
实际使用中该注意什么
1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口但是两者不可兼得,同时也只能继承一个类或者实现一个接口
3、匿名内部类中不能存在任何的静态成员变量和静态方法。
4、匿名内部類为局部内部类所以局部内部类的所有限制同样对匿名内部类生效。
5、匿名内部类不能是抽象的它必须要实现继承的类或者实现的接ロ的所有抽象方法。
1.内部类的class文件命名是:主类+$+内部类名
匿名类不能使用任何关键字和访问控制符匿名类和局部类访问规则一样,呮不过内部类显式的定义了一个类然后通过new的方式创建这个局部类抽象类实例化,而匿名类直接new一个类抽象类实例化没有定义这个类。匿名类最常见的方式就是回调模式的使用通过默认实现一个接口创建一个匿名类然后,然后new这个匿名类的抽象类实例化
为了分类说奣,先定义三个类(接口抽象类,非抽象类)
//以上两种是通过实现接口实现匿名类称为接口式匿名类,也可以通过继承类 * 此处 b
是“ 抽潒类AbstractB ” 的抽象类实例化化对象吗当然不是! * 哲学上讲
进化不完全的物种是不能存在的,抽象类就是那种没有进化完全的是不能被抽象類实例化化的。 * b是抽象类的子类(实现类)的一个抽象类实例化 *
只不过定义该子类的同时直接抽象类实例化化了一个该子类的对象,并且指向了父类的引用。 };//继承匿名类注意ClassC是一个非抽象类
//还可以是位于参数列表的位置