class x{
public final int a = 1;
}
class y extends x{
public final int a = 2;
}
x类中的a不是常量吗,怎么在子类中可以被重新定义和赋新值呢?
相对照,x中的public final方法在子类中不能重新定义
能讲下具体原因吗?谢谢
作者: ilvsoft 时间: 2014-4-14 23:32
你 y中的a是重新定义的一个a,和你x中a并不是同一个a,所以这个不算是y对x类中a的赋新值,如果你在y中没有定义a而是直接给a赋值的话,这个是的a才是同一个a
class x{
public final int a = 1;
void show(){
System.out.println(a);
}
}
class y extends x{
public final int a = 2;
void show1(){
System.out.println(a);
}
}
class C
{
public static void main(String[] args){
y yy=new y();
y.show(); //输出结果1
y.show1(); //输出结果2
}
}作者: Emperors 时间: 2014-4-16 23:29