楼主搞混淆了。只是被final修饰的函数不能被子类复写而已。被final修饰的变量就是常量,子类是可以重新定义的。
class A{final int var=1;}
class B extends A{final int var=2;}
A t1=new B();//t1.var等于1
B t2=new B();//t2.var等于2
A t3=new A();//t3.var等于1
B t4=new A();//不知道能不能编译通过,如果可以t4.var就等于1
此时,t1.var等于1,t2.var等于2。t3.var等于1。