匿名内部类问题
这是用记事本写的匿名内部类程序(java编程思想P197例子),用的java1.7编译器,无法编译[img=http://user.qzone.qq.com/1476505546/infocenter#!app=4&via=QZ.HashRefresh][/img]--------------------编程问答-------------------- 可能是你的代码不完整!其中的一部分,很多书也有缺点 --------------------编程问答-------------------- 什么是匿名内部类?
public class Parcel{
public Contents contents(){
return new Contents(){
private int i=11;
public int value(){ return i;}
};
}
public static void main(String args[]){
Parcel p=new Parcel();
Contents c=p.contents();
}
}
适合哪种只需要使用一次的类。例如:
package com.snow.test;
class P {
void add(P p) {
System.out.println("abc");
}
}
public class C extends P{
public static void main(String[] args) {
C c = new C();
c.add(new P(){
});//所选部分即为匿名内部类。它是没有名字的
}
}
--------------------编程问答-------------------- public class Parcel{
public Contents contents(){
return new Contents(){
private int i=11;
public int value(){ return i;}
};
}
class Contents{
}
public static void main(String args[]){
Parcel p=new Parcel();
Contents c=p.contents();
}
}
这样就可以啦 。return new Contents(){
private int i=11;
public int value(){ return i;}
};
这里相当于class Contents的子类吧。 父类引用指向子类对象吧。这个理解,不知道对不对 --------------------编程问答-------------------- 这里面没有继承,只是个内部类而已 --------------------编程问答--------------------
我程序里的Contents类和你的P类是一样的吧 --------------------编程问答--------------------
匿名内部类好像不是这样定义的 --------------------编程问答-------------------- 我想我明白了,“一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类”。在外部类前面先定义Contents为抽象类能运行了。谢谢大家了 --------------------编程问答--------------------
差不多是这样的,你的Contents 也可以换个一个接口,都是可以的,但是前提是要先定义。
补充:Java , Java SE