问答详情
源自:9-5 Java 中的 final 的使用

为什么我在Animal类中final了age的属性,视频中说在main方法中不能赋值,而我打的却可以?

Animal类代码:

package project1;


 public class Animal {

final public int age=2;

public String name;

 public void eat()

{

System.out.println("具有吃东西的能力");

System.out.println("它叫"+name+"今年"+age+"岁");

}

public Animal(){

//age=3;

System.out.println("Animal方法执行了");

}


}

子类dog代码:

package project1;


public class dog extends Animal {

public int age=10;

public void eat()

{

System.out.println("小狗具有吃东西的能力");

System.out.println("叫"+name+"今年"+age+"岁");

}

public dog(){

System.out.println("dog方法执行了");

}

}

main方法代码:

package project1;


public class DUIXIANG {


public static void main(String[] args) {

// TODO 自动生成的方法存根

dog g=new dog();

g.age=3;

g.name="小白";

g.eat();


}


}


提问者:福工刘德华 2017-08-15 20:47

个回答

  • code_walker
    2018-08-13 14:57:35

    建议你打印一下你的age,你应该就知道怎么回事了

  • _远到自然淡
    2018-06-01 11:54:44

    dog类的是重新定义了一个int属性的age,改写改的也是dog类的age

  • 慕粉3308943
    2017-09-26 20:46:24

    dog里面也定义了一个int 的age,子类和父类里面的类有重名的

  • Robert_Langdon
    2017-09-17 11:42:25

    你定义的是dog对象 改的是dog里的age 和父类的age半毛钱关系都没有

  • psh
    2017-08-15 21:05:41

    子类无法继承父类用final修饰的方法属性,你改变的是子类的age