繁体   English   中英

实例变量声明语法

[英]Instance Variable Declaration Syntax

在声明实例变量时,我看到我的新手眼中看起来像Java中的冲突约定。 例如,经典银行帐户实例变量可能看起来像这样,这非常有意义。

private double balance = 0.0;

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

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

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

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

我的问题:为什么第二种语法看起来好像与第一种语言有很大不同?

任何帮助,将不胜感激。

为什么第二种语法看起来好像与第一种语言有很大偏差?

它不会从第一偏离

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

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

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

访问修饰符,数据类型,变量名称和值都是我(错误地)认为进入实例变量的

它实际上是一样的:

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

私有 - 访问修饰符
ColorImage - 数据类型
image1 - 变量名称
new ColorImage(“file.gif”) - 用于创建新对象并返回对象引用值的表达式

Java数据类型可以是原始类型引用类型 在您的示例中, double是基本类型, ColorImageCanvas都是引用类型。

=的右侧,你可以有任何表达式:

private double balance = 1.0 - 1.0;

要么

private double balance = zero();
static double zero() {
    return 0.0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM