属性:访问指定

时间:2011-10-26 13:22:27

标签: c# oop private public private-members

当我提到一本书时,我得到了以下陈述:

  

当数据类型或方法被定义为公共时,其他对象可以直接访问它。当数据类型或方法被定义为私有时,只有特定对象才能访问它。

现在这真令人困惑。 Public和Private是Access Specificationiers,它只定义属性或方法的范围。

为什么对象与访问说明符混合在一起?对象是否必须与公共,私有或受保护做任何事情,除了如果某些事物被定义为公共事实,那么对象也将能够访问而不考虑范围

2 个答案:

答案 0 :(得分:1)

这不是范围问题,而是访问限制修饰符。如果将函数声明为private,则表示只有该类可以调用该函数。

公开:    任何人都可以调用这些函数 私人的:    只有那个类和反射引擎 保护:    只有那个类及其派生成员 内部:    公开到该程序集中的所有类

小前任

public class A
{
    public int x;
    protected int y;
    private int z;
}

public class B : A
{
    public int CallPro()
    {
        return y;
    }

    public int CallPriv()
    {
        return z; //error 
    }

}

static void Main()
{
    A oa;
    oa.x; //Fine
    oa.y; //Error
    oa.z; //Error


}

答案 1 :(得分:0)

  

Public和Private是只定义范围的访问说明符   属性或方法。

这定义了对象的行为。因此,访问说明符对于对象很重要。想象一下,如果你有一个外观类型的对象,你不希望暴露操作的所有细节,而是想要为消费者公开一个简单的公共接口(例如,Save()方法)。这就是为什么你必须考虑对象的说明符。

public class CustomerFacade()
{
public bool Save(Customer c)
{
    VerifyCustomer(c);
// lots of other steps which the caller does not need to know
    SaveorUpdateCustomer(c);
    }
    private void VerifyCustomer(Customer c)
    {
    }
    private void SaveorUpdateCustomer(Customer c)
    {
    }
    }

public class CustomerController()
{
public bool Save(Customer c)
{
return new CustomerFacade().Save(c);
}
}