我不确定为什么会这样-希望有人能解释一下!
我有一个名为BaseRequest的基类,其中有:
protected int cartNumber;
我有一个派生类,它继承了BaseRequest。它具有一个公共字段和构造函数,如下所示:
public int currentCartNumber;
public ExtendedBaseRequest(int cartNumber)
{
currentCartNumber = cartNumber;
}
是的,我知道拥有与基类中的保护字段同名的参数有点愚蠢,但是直到现在我才注意到它!
这将编译并运行,但是未设置派生类中的公共currentCartNumber值,因为它使用了基类中的值,该值在初始化时始终为零。
编译器是否应该抱怨这一点,因为构造函数签名中的cartNumber声明与基数中的名字相同?
期待您的回音。
最佳答案
您对正在发生的事情的分析是不正确的。这里还有其他事情。
您确定不将0
传递给构造函数吗?
不合格的cartNumber
将始终引用该参数。继承的字段需要用this
或base
限定。
在问题所示的代码中,语句currentCartNumber = cartNumber
将cartNumber
参数的值分配给currentCartNumber
字段。