我不确定为什么会这样-希望有人能解释一下!

我有一个名为BaseRequest的基类,其中有:

protected int cartNumber;


我有一个派生类,它继承了BaseRequest。它具有一个公共字段和构造函数,如下所示:

public int currentCartNumber;

public ExtendedBaseRequest(int cartNumber)
{
   currentCartNumber = cartNumber;
}


是的,我知道拥有与基类中的保护字段同名的参数有点愚蠢,但是直到现在我才注意到它!

这将编译并运行,但是未设置派生类中的公共currentCartNumber值,因为它使用了基类中的值,该值在初始化时始终为零。

编译器是否应该抱怨这一点,因为构造函数签名中的cartNumber声明与基数中的名字相同?

期待您的回音。

最佳答案

您对正在发生的事情的分析是不正确的。这里还有其他事情。

您确定不将0传递给构造函数吗?

不合格的cartNumber将始终引用该参数。继承的字段需要用thisbase限定。

在问题所示的代码中,语句currentCartNumber = cartNumbercartNumber参数的值分配给currentCartNumber字段。

09-25 20:17