【发布时间】:2013-10-17 20:19:54
【问题描述】:
我对封装很困惑。我目前的封装概念是它只用于数据隐藏。
我的代码:
class Program
{
static void Main(string[] args)
{
Shape a;
a= new Shape();
a.Area = 4;
Console.WriteLine(a.Area);
}
}
class Shape
{
private int _area = 0;
private int _parameter = 0;
public int Area { get; set; }
public int Parameter { get; set; }
}
据我了解,私有 int 变量 _area 现在已被封装。所以,这里的封装是通过
使用私有访问修饰符,我可以隐藏这个变量;和
通过使用公共属性,我可以在没有的情况下初始化这个变量
使用类变量。
这就是封装的全部意义吗?如果我错了,请纠正我。
【问题讨论】:
-
见:stackoverflow.com/questions/385361/…(除了最佳答案)。
-
附带说明:您的变量
_area永远不会被使用。当使用自动属性({get; set;}语法)时,backingfiled 会自动在后台创建。 -
@Koen,那个支持域应该做什么?
-
写一个不带封装的
class CalenderDate(public int Y,M,D;),然后作为类的编写者,尽量保证实例将始终包含有效日期。
标签: c# oop encapsulation