以下是关于在类中使用属性的问题。
我一直在使用公共(public)属性而不是公开公开成员变量。大多数人建议这种方法有助于封装。但是,我不理解通过将其作为属性来封装的优势。
许多人不知道使用属性的真正原因。他们只是将其作为编码标准的一部分。
有人能清楚地解释一个属性如何比公共(public)成员变量更好,以及它如何改进封装吗?
最佳答案
封装有助于将调用类与更改隔离开来。
假设您有一个模拟汽车引擎的简单类(因为所有 OO 示例都应该涉及汽车类比 :))。您可能有一个像这样的简单字段:
private bool engineRunning;
简单地将这个字段公开或提供一个 IsEngineRunning() getter 似乎没有任何不同。
现在假设您使您的类(class)更加复杂,您想要删除该字段并将其替换为:
private bool ignitionOn;
private bool starterWasActivated;
现在,如果您有很多类访问旧的
engineRunning
你必须去改变他们所有的领域(糟糕的时期)。相反,如果您从以下内容开始:
public bool IsEngineRunning()
{
return this.engineRunning;
}
您现在可以将其更改为:
public bool IsEngineRunning()
{
return ignitionOn && starterWasActivated;
}
并且类的界面保持不变(美好时光)。
关于oop - 属性和封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903385/