Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现上面是网上的一道常见的笔试题里面的。
自己学了这么长时间java了可是回过头来对这个问题还是很陌生;不理解;大家可不可以举几个例子讨论一下啊;
答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现上面是网上的一道常见的笔试题里面的。
自己学了这么长时间java了可是回过头来对这个问题还是很陌生;不理解;大家可不可以举几个例子讨论一下啊;
通过使用匿名内部类,我觉得可以使代码更整洁,易看。
}public class Parcel6 {
public Contents cont() {
return new Contents() {
private int i=11;
public int value() { return i;}
};
}
public static void main(String[] args) {
Parcel6 p=new Parcel6();
Contents c=p.cont();
}
}
java编程思想上有现成的例子。
abstract class Base{
public Base(int i){
System.out.println("Base constructor,i="+i);
}
public abstract void f();
}public class AnonymousConstructor{
public static Base getBase(int i){
return new Base(i){
{ System.out.println("Inside instance initializer");}
public void f(){
System.out.println("In anonymous f()");
}
};
}
public static void main(String[] args){
Base base=getBase(47);
base.f();
}
}
我将内部类的知识做一个简单的小结:也许对你有帮助
内部类分为四类:
1、静态内部类
2、成员内部类
3、局部内部类
4、匿名内部类
而你问到的匿名内部类有以下几个(6个)特点:(4无2有)
4无:
1、无class关键字
2、无类名
3、无构造
4、无继承关键字,但是有继承关系。
2有:
5、有类体(即类体花括号)
6、有父类或父接口名写一个简单的例子:
public class Outer{
public Outer(int i){ //constructor
System.out.println("another constructor");
}
public Outer(){ //constructor
System.out.println("default constructor");
}
public void method(){
System.out.println("from Outer");
}
public static void main(String[] args){ //main method
new Outer().method; // invoke the outer method
Outer outer = new Outer(){ //anonymous inner class
public void method(){ //override method
System.out.println("from inner anonymous class");
}
};//end of inner class body
out.method();
}
}
/**
*通过调用method方法,从结果可以看到外部类的method方法被重写了,也可以清楚的体现匿 *名内部类4有2无的特点
*/