为什么我不能声明,然后在没有任何IN JAVA方法的情况下为类中的变量赋值

时间:2016-10-12 20:51:41

标签: java

这可能听起来很疯狂,但我真正想做的只是在公共类中声明并初始化一个成员变量,然后使用另一个在C中非常逼真的值重新赋值。但它在Java中失败了。

public class App {

    public int id=6; 
    // id = 7; 

    public void method() {
        id = 7;  // that's okay 
    }
}

但这可以在一种方法中完成。例如:

{{1}}

所以,对我来说真正令人困惑的是,在那里使用一个方法而不是在下一行中重新分配成员变量的区别。如果有的话,我真的很期待学习它的洞察力概念。

重复的区别:我想学习OOPL强制使用方法/构造函数的方法,如果我在初始化后尝试重新分配任何变量吗?

2 个答案:

答案 0 :(得分:-2)

通常,在面向对象的编程中,“类”表示特定对象的描述。如果我们使用汽车的类比,可以将其视为“蓝图”。

蓝图做了很多事情:

  • 描述对象可以拥有的属性类型(因此汽车可能具有颜色和速度)
  • 描述对象可以做什么(''方法')
  • 描述每次创建对象的初始状态

public int id=6行执行第一行和最后一行。它表示任何App对象必须具有id属性,其初始状态为值6。如果你把行id=7放在类定义中,这不是蓝图的一部分 - 说id的默认值是6是没有意义的,然后决定它是7 - 所以这是一个错误。

在Java中,与许多面向对象的语言一样,修改状态的实际代码必须在“方法”中进行,因为每次在OOP中发生某些事情时,它都是“对象”做某事

修改

您的错误是

  

令牌“;”的语法错误,预期

这是有道理的 - 它会看到以下代码

 public int id=6;

 id=7; 

并且认为你真正打算做的是

 public int id=6,

 id=7; 

相同
 public int id=6, id=7; 

当然,除非您更改了第二个定义的名称,否则这可能会产生另一个错误。

答案 1 :(得分:-3)

在根级别,您只能声明方法和字段变量。如果要在初始化对象时更改变量的值,则需要在构造函数中执行此操作:

public class App {
      public int id=6; 

      public App() {
            id=7; 
     }
}