测试代码:
class A {
final void a(int i) {
System.out.println( "A.a ");
}
}
class B extends A {
void a(float f) {
System.out.println( "B.a ");
}
}
public class Test {
public static void main(String[] args) {
int i = 0;
float f = 0f;
B b = new B();
b.a(i);// final not work
b.a(f);
A a = b;
a.a(i);
}
}
为什么我可以在子类中重载超类的final方法啊,书上说不可以的,请高人赐教。
------解决方案--------------------
。。。方法重载是发生在同一个类里的吧,与超类发生的是覆盖吧?我也不是很清楚哦
------解决方案--------------------
因为B里面的a方法定义为a(float f),这样与A中的a(int i)方法形成了overload
lz可以试试看吧B里面的a方法也定义为a(int i),这样才是override,并且编译器会告诉lz不能override一个final method