我发现自己对下面的内容缺乏了解。
上课:
public class MyClass
{
public var width:int = 10;
public var height:int = 10;
public function MyClass(width:int, height:int)
{
trace(width, height);
}
}
输出将始终是宽度和高度的提供值,而不是属于MyClass
的宽度和高度属性。你也永远不会收到上述错误,即使看起来应该有一个冲突的属性名称。
为什么/如何运作?另外,我的构造函数上方定义的宽度和高度是否仍然可以在我的构造函数中访问?
答案 0 :(得分:3)
它有效,因为参数名称为“shadow”字段变量名称,即编译器假定您的意思是那些。
您可以使用this.width
和this.height
来访问成员。这也是编译器将所有隐式成员调用转换为字节代码的事实上的语法(如果没有相同名称的局部变量,width
将自动转换为this.width
)。
BTW某些IDE(如FDT)允许您为名称阴影设置警告或错误消息。
答案 1 :(得分:1)
编译器将首先优先考虑本地范围的变量。
在您的情况下,如果您想要班级成员vars,您需要指定“this”。
参数(宽度和高度)与类成员完全不同。