java - 实例变量声明语法

标签 java class object constructor instance-variables

当谈到声明实例变量时,我看到在我的新手眼中出现的 Java 中的约定冲突。例如,一个经典的银行账户实例变量可能看起来像这样,这是非常合理的。

private double balance = 0.0;

访问修饰符、数据类型、变量名和值都是我(错误地)认为进入实例变量的。现在是令人困惑的部分。

考虑一个名为 ColorImage 的库/类/包。它显然有一个 Canvas 对象,但这是实例变量声明的样子。

private Canvas canvas = new Canvas();
private ColorImage image1 = new ColorImage("file.gif");

现在看起来对象名称,甚至库/包/类本身的名称,都被用作数据类型。此外,实例变量已连接到看起来像构造函数的东西。

我的问题: 为什么第二种语法看起来与第一种语法大相径庭?

如有任何帮助,我们将不胜感激。

最佳答案

Why is this second syntax ok when it looks like it deviates wildly from the first?

一点都没有偏离第一个。

Part                        First example       Second example
Access modifier             private             private
Type                        double              Canvas
Name                        balance             canvas
Initialization expression   0.0                 new Canvas()

您在哪里看到差异?是的,类型可以是类,而不仅仅是原始类型。是的,初始化表达式可以是任何表达式(不使用其他实例变量)而不仅仅是文字。这根本不会改变语法

请注意,访问修饰符是可选的(默认为“包访问”),还有其他可能的修饰符(volatilefinalstatic)。但在您的示例中,应用的修饰符集完全相同。

关于java - 实例变量声明语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29772304/

相关文章:

c++ - 多态树类中的双指针向上转换(再次)、shared_ptr 和通用 setChild 函数

python - 当函数需要成为一个类时

node.js - 在 ES6 中导入和扩展类的最佳方式

javascript - 使用括号键减少功能

java - 在Java中通过txt文件创建对象到数组中

Java 堆栈溢出错误 - 如何在 Eclipse 中增加堆栈大小?

java - Intent.getExtras 不起作用

javascript - 如何获取 JavaScript 对象的大小?

java - 如何从 tomcat webapp 中的 context.xml 文件中获取资源?

java - 用Java压缩视频文件