当我提到一本书时,我得到了以下陈述:
当数据类型或方法被定义为公共时,其他对象可以直接访问它。当数据类型或方法被定义为私有时,只有特定对象才能访问它。
现在这真令人困惑。 Public和Private是Access Specificationiers,它只定义属性或方法的范围。
为什么对象与访问说明符混合在一起?对象是否必须与公共,私有或受保护做任何事情,除了如果某些事物被定义为公共事实,那么对象也将能够访问而不考虑范围
答案 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);
}
}