Java中只有一行的实例变量



Hi-stackoverflow成员,你知道为什么Java类中的实例变量只能在一行中声明,而不能在2行中声明吗?例如:

String ring;
ring = "indeed"; 

它给出了一个编译错误。为什么不允许?像我在这个例子中所做的那样做是没有意义的,但是使用该过程初始化从超类继承的变量可能会很有用,而不使用子类构造函数。

例如:

class Ringo{
String ring;
}
class RingoStar extends Ringo{
ring = "That's how to play drums";
}

很明显,它给出了一个编译错误。这就是重点,有人知道为什么不允许吗?

您可以使用稍微不同的语法获得所需内容。考虑:

class Ringo{
 String ring;
 { 
  ring = "indeed";
 }
}

我想你这个问题的答案是Java语法不允许在类主体中只包含任何语句。您需要使用如上所示的初始化器块(请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html)。

如果用花括号包装赋值,在技术上是可行的:

String ring;
{
    ring = "indeed";
}

赋值在任何构造函数之前执行。

声明和初始化之间有区别。宣言是一件分配和处理的事情。初始化是用信息填充内存。它必须用不同的语法和规则来表示。

一种语言也需要注意美学。在编写Java的时候,我想这就是对美学的需求。Pascal的架构师重写.NET C#时,我想他们的做法有所不同。学习Java和Pascal。

Java文件有两个完全独立的方面:

  • 汇编时采取行动的声明
  • 执行代码,在运行时执行

像这样的单线

private int x = 1;

看起来这一切都与执行代码有关("它创建了一个实例变量"),但事实上它有两个方面,事实上,这两个方面在产生效果的时间上有很大的区别。在Java中,从来没有像Ruby中那样在运行时创建变量。

当你记住这一点时,你会发展出正确的直觉,即前一条线在本质上与非常不同

x = 1;

在中产阶级的身体里。

最新更新