封装......最精确的描述?

Mir*_*ria 7 c# oop

我知道封装意味着一个对象不应该直接访问不同对象的成员...但我想它与公共领域有关?我假设公共方法不破坏封装..?我在这里不清楚,对任何解释都很高兴.

Dan*_*dor 12

封装是你通过以下方式开车:

  • 转动点火钥匙
  • 转向车轮
  • 更换齿轮(如果不是自动的)
  • 添加燃料

而不是:

  • 点燃汽缸中的燃料
  • 摩擦轮胎和地面
  • 等等...

暴露(制造public)什么,隐藏(制造private)如何.现在,你正在封装.

:)


Abe*_*ler 3

封装并不意味着成员不能被访问。这意味着您应该只允许应该使用的成员访问,基本上是限制访问而不是禁止访问。

通过将某些内容公开,您就允许访问,而通过将其设为私有,您就不允许访问。

本文更深入地介绍了各种访问修饰符:

http://www.csharp-station.com/Tutorials/lesson19.aspx

在这篇文章中,他们给出了一个很好的例子:

using System;

class BankAccountProtected
{
    public void CloseAccount()
    {
        ApplyPenalties();
        CalculateFinalInterest();
        DeleteAccountFromDB();
    }

    protected virtual void ApplyPenalties()
    {
        // deduct from account
    }

    protected virtual void CalculateFinalInterest()
    {
        // add to account
    }

    protected virtual void DeleteAccountFromDB()
    {
        // send notification to data entry personnel
    }
}
Run Code Online (Sandbox Code Playgroud)

当程序员想要关闭帐户时,他们不必担心其中的各个步骤:

  1. 申请处罚
  2. 计算最终利息
  3. 从数据库删除帐户

他们应该只是说他们希望关闭它并且将采取所有必要的措施。这就是为什么CloseAccount是公开的而其他不是公开的。