私有类应该在哪里使用?

3

据我所了解,如果我们有一个私有类,那么只有在不是私有类的某个类中访问该私有类时才能够被访问。那么我们为什么需要这么多的迂回操作,可以用这种方式解决什么样的业务问题呢?请给我一个真实生活案例。

非常抱歉如果这是一个重复的问题。


如果你看不到它的用处,就忽略它并不要使用它。我从来不明白为什么人们期望对于他们看不到直接用途的功能进行辩解。将其归档并继续前进。 - Damien_The_Unbeliever
4个回答

6
有时候问题非常复杂。您需要使用类来抽象出部分解决方案。然而,在相当罕见的情况下,该部分(表示为一个或几个类)并不独立于外部世界,它只是为了满足特定需求而存在。在这种情况下,将这样的类设置为私有是理想的:它可以保持名称空间的清洁和整洁,防止混淆,并很好地传达了这个特定代码只是某个问题的辅助机器。

1
一个私有类在以下情况下非常有用:当您需要一个对象,它只作为其父类的一部分而存在,并且您需要将其范围限制为其父类时。
例如,假设您有一个Transaction对象,其中包含一个SecurityInfo对象,您需要确保该对象仅对Transaction可访问。
 public class Transaction 
 {
     public int ID;

     public bool ValidateSecurityInfo()
     {
           //Securityinfo can only be used within the Transaction class
           var info = new SecurityInfo();
      }

      private class SecurityInfo 
      {
      }
 }

0

0
嵌套类可以访问父类的私有成员。因此,使用私有类,您可以使子类也变为私有,从而防止外部访问它们的机制。
class Program
{
    static void Main(string[] args)
    {
        var pub = new PublicClass();

        // If PrivateClass was public we could do this
        //var priv = new PublicClass.PrivateClass(pub);
        //priv.ChangeX(3);
    }
}

public class PublicClass
{
    private int _x;
    private readonly PrivateClass _privateClass;

    public PublicClass() => _privateClass = new PrivateClass(this);

    private class PrivateClass
    {
        private readonly PublicClass _publicClass;
        public PrivateClass(PublicClass publicClass)
        {
            _publicClass = publicClass;
            ChangeX(2);
        }

        // We can access our parents class's private members
        public void ChangeX(int newX) => _publicClass._x = newX;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接