日期:2014-05-20  浏览次数:20672 次

匿名内部类中定义的方法无法调用,来大神帮帮我
public class Test {
public static void main(String[] args){
aaa a=new aaa("传递的参数"){
public void told(){
System.out.println("told方法调用");
}
public void say(){
System.out.println("say方法调用");
}
};
a.say();
a.told(); //这里提示说没有找到told方法
}

}
class aaa{
aaa(String b){
a=b;
}
String a="";
public void say(){
System.out.println("a");
}
}
来个大神帮下,小弟初学,为嘛在这个匿名内部类中定义的方法told,我调用的时候他提示没有找到这个方法啊?
匿名内部类

------解决方案--------------------
楼主定内部类定义错了!
首先你声明了一个 aaa类,如下
class aaa {
aaa(String b) {
a = b;
}

String a = "";

public void say() {
System.out.println("a");
}
然后你在main方法中又
aaa a = new aaa("传递的参数") {
public void told() {
System.out.println("told方法调用");
}

public void say() {
System.out.println("say方法调用");
}
};
这样
这相当于你定义 aaa类的子类,并把它赋值给aaa的引用,而aaa中是没有told方法的,如果你在aaa中定义了told方法,那么就不会报错了!
------解决方案--------------------
引用:
感谢三楼,那我要用这个匿名类里面的told方法怎么办呢,把他向下转型匿名类又没的名字......
刚学匿名类,都不太晓得怎么用他.....

new aaa("传递的参数"){
public void told(){
System.out.println("told方法调用");
}
public void say(){
System.out.println("say方法调用");
}
}.told();