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

final没赋值,用构造方法赋值,为什么还报错?

http://img.mukewang.com/570771660001295004210292.jpg为什么还报错





提问者:转行写代码 2016-04-08 16:54

个回答

  • 慕少9615151
    2018-07-24 16:09:32

    构造方法
    特点:
    1.方法名称和类名相同
    2.不用定义返回值类型
    3.不可以写return语句


  • qq_小鼬_03824441
    2016-08-23 10:21:28

    你写的public void eat (){}不是构造方法,应该是  public Animal(){}    和类名相同

  • Sky_X
    2016-08-15 22:59:24

    你写的那个不是构造方法

  • Sky_X
    2016-08-15 22:44:57

    final修饰之后就已经是常量了,常量是不会被赋值的

  • 求知的蟑螂
    2016-07-15 13:46:16

    final 修饰一个变量时,该变量只能被赋值一次,为常量。

    final public int age;  

    已经定义age变量为常量了,初始化了。

  • 雪中_悍刀行
    2016-07-09 18:20:19

    其中  eat()  是普通方法,不是构造方法,亲,看清楚了

  • cherry洋丁
    2016-04-10 08:01:35

    你那个eat()也不是构造方法啊,final修饰的属性在声明时没赋值,是可以在构造方法里赋值的。

    public class Animal {

    final public int age;

    public void eat(){

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

    }

    public Animal(){

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

    age=20;

    }

    }


  • nizhuan1130
    2016-04-09 10:14:42

    楼上说的不对,Java里面final可以进行留白,并且在构造方法里面赋值。

    public class Test {
       private final int testNum;
       public Test(int test) {
          this.testNum = testNum;
       }
    }

    或者

    public class Test {
       private final int testNum;
       public Test() {
          testNum = 10;
       }
    }

    都是可以的。问题里不可以是因为并没有使用构造方法而是在方法里面赋值,这是不可以的。

    楼上说的例子里面,因为有了static关键字,所以这个量是属于类的,就必须要在初始化的时候赋值,不能留白。而没有关键字的static的时候,量是在对象初始化的时候才初始化,所以可以在构造方法里面赋值。

  • changrui0608
    2016-04-09 10:02:57

    Java中final的设计就是这样的,只能在定义的时候赋值,不能在其他地方赋值或修改(区别于“只能赋值一次”)

    final的用处多数在于,当你需要一个确定的值表达某个含义的时候,用final修饰它,一方面防止错误操作(比如不小心把这个值修改了),另一方面起到说明文档的作用,告诉其他程序员这个值是表达某个特定意义的常量。

    比如我们可以使用final修饰圆周率PI

    static final double PI = 3.1415926;

    然后可以方便地使用PI来做计算

    double getArea (double radius) {
        return (PI * radius * radius);
    }

    因为对于final修饰的值,是对于每个该类下的对象都是确定且一致的,所以通常有final就也有static。

    最后,一般final修饰的常量,命名用大写字母,用下划线分隔单词的命名方式,例如

    static final MY_INT_CONSTANT = 1024;

    以上

  • 夜阑风语丿
    2016-04-09 08:26:33

    final修饰一个变量后变成常量,常量不可以修改,赋值,当初定义的是什么就是什么

  • Java小子1
    2016-04-08 17:50:47

    构造方法不能指出返回类型。

  • 冠希般纯洁如水
    2016-04-08 17:31:00

    final修饰的就是最终的 了你不能进行赋值了