黑马程序员技术交流社区

标题: java 中final型数据用法的小疑问 [打印本页]

作者: Emperors    时间: 2014-4-14 23:12
标题: java 中final型数据用法的小疑问
java 中final型数据用法的一点疑问,求指教    谢谢

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
ilvsoft 发表于 2014-4-14 23:32
你 y中的a是重新定义的一个a,和你x中a并不是同一个a,所以这个不算是y对x类中a的赋新值,如果你在y中没有 ...

哦哦  谢谢:)
作者: 张志成    时间: 2014-4-17 02:25
继承中如果父类的方法被final修饰了,子类可以继承但不可以复写,如果父类中属性被final 修饰了,子类也可以继承,记住属性没有复写这一说法,所以上面第二个变量a是子类自己的,虽然和父类的一模一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2