package C_Java_SE.day03.InnerClass;public class AnnInnerClassDemo
{
public static void main(String[] args)
{
final int a=5;
Outer oo=new Outer()
{
int b=4;
public String toString()
{
return "匿名内部类!";
}
public int hashCode()
{
return a*1000+b;
}
public int add()
{
return a+b;
}
};
System.out.println(oo);
System.out.println(oo.hashCode());
System.out.println(oo.add());//编译错误
}
}
class Outer
{}
为什么最后一行输出会报错?
匿名内部类不能自己定义方法吗?
{
public static void main(String[] args)
{
final int a=5;
Outer oo=new Outer()
{
int b=4;
public String toString()
{
return "匿名内部类!";
}
public int hashCode()
{
return a*1000+b;
}
public int add()
{
return a+b;
}
};
System.out.println(oo);
System.out.println(oo.hashCode());
System.out.println(oo.add());//编译错误
}
}
class Outer
{}
为什么最后一行输出会报错?
匿名内部类不能自己定义方法吗?
匿名内部类不能自己定义方法吗?//可以,通过反射来访问。
首先,楼主这个根本不叫匿名内部类,匿名内部类是不会出现类名称的,即没有声名类名那部分,
只会出现new Outer()
另外,既然是匿名内部类,所以只会使用一次,匿名内部类外部怎么可能会调用到匿名内部类内部的方法。
没办法说了,楼主看下书吧,基础没有搞明白前不要急着问问题
interface Outer{
int add();
}
or
abstract class Outer{
abstract int add();
}
or
class Outer{
public int add(){
return 0;
}
}
父类没有add()方法 故报错
父类默认有toString() 和hashCode() 所以前面的不报错