我不确定为什么会这样 - 希望有人能解释一下!
我有一个名为BaseRequest的基类,其中包含:
protected int cartNumber;
Run Code Online (Sandbox Code Playgroud)
我有一个派生类,它继承了BaseRequest.它有一个公共字段和构造函数如下:
public int currentCartNumber;
public ExtendedBaseRequest(int cartNumber)
{
currentCartNumber = cartNumber;
}
Run Code Online (Sandbox Code Playgroud)
是的,我知道在基类中有一个与受保护字段同名的参数有点傻,但直到现在我才注意到它!
这将编译并运行,但派生类中的public currentCartNumber值未设置,因为它使用基类中的值,初始化时始终为零.
编译器不应该对此抱怨,因为构造函数签名中的cartNumber声明与基类中的声明具有相同的名称吗?
期待您的回音.
这将编译并运行,但派生类中的public currentCartNumber值未设置,因为它使用基类中的值,初始化时始终为零.
该描述与您提供的代码片段不匹配.请提供一个完整的简短程序,我们可以自行编译并运行以重现所谓的行为.
编译器不应该对此抱怨,因为构造函数签名中的cartNumber声明与基类中的声明具有相同的名称吗?
不,那是完全合法的.在同一声明空间中声明两次相同的名称是违法的,但基类和形式参数列表具有不同的声明空间.
我们希望这样做是合法的:
class C
{
int blah;
public C(int blah)
{
this.blah = blah;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
263 次 |
最近记录: |