首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

final润饰的变量在子类中还能修改

2012-10-19 
final修饰的变量在子类中还能修改?rt,final修饰的变量不是不能修改吗,下面的代码行吗,大家看看。不过确实没

final修饰的变量在子类中还能修改?
rt,final修饰的变量不是不能修改吗,下面的代码行吗,大家看看。不过确实没问题。

Java code
class Fruite {    final int price = 5;}class Orange extends Fruite {    final int price = 10;}public class SweetOrange extends Fruite {    final int price = 20;    public static void main(String[] args) {        Fruite f=new SweetOrange();        Orange o=new Orange();        System.out.println(f.price|o.price);    }}


[解决办法]
f是Fruite类的引用,f.price自然输出的是Fruite的price 5,所以并没有改变值
[解决办法]
Java code
class Fruite {    final int price = 5;}public class SweetOrange extends Fruite {        public static void main(String[] args) {        SweetOrange f = new SweetOrange();        f.price=100;//报语法错误,表名,父类的final变量不能被修改        System.out.println(f.price);    }}
[解决办法]
楼上说的在理,其实子类确实继承了父类的成员变量price的值,但是子类中又定义了一下price变量,相当于父类的成员被覆盖了,所以不能算是修改final修饰的变量。如果在main函数中试图去修改的话,那肯定会报不能修改的错的。
[解决办法]
你那是在子类里又重新声明了一次

热点排行