匿名内部类方法重载时,为什么在“基类”中没有重载的情况下调用会报错,而当基类同样重载时调用不报错?
问题描述:
class A
{
void A_f()
{
}
void A_f(int i)
{
}
}
class B
{
A B_reciveA()
{
return new A()
{
void A_f()
{
System.out.println("A_f()");
}
void A_f(int i)
{
System.out.printf("A_f(%d)",i);
}
void A_f(String s)
{
System.out.println(s);
}
};
}
}
public class inner
{
public static void main(String [] args)
{
B b = new B();
A a = b.B_reciveA();
a.A_f();
a.A_f(12);
//a.A_f("哇哈哈");
}
}
A_f(String s)方法是运行时检查的吗?
答
return new A()的时候已经在对A进行实例化了,B_reciveA()这个函数中对A进行了实例化,这个函数的返回值是A,相当于下面的这种写法
A test()
{
A a = new A()
{
void A_f()
{
System.out.println("A_f()");
}
void A_f(int i)
{
System.out.printf("A_f(%d)",i);
}
};
return a;
}
重载是在定义类的时候写的