gpt4 book ai didi

oop - 属性和封装

转载 作者:行者123 更新时间:2023-12-04 16:56:35 26 4
gpt4 key购买 nike

以下是关于在类中使用属​​性的问题。

我一直在使用公共(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com