封装是对方法、字段、属性等成员的一种保护,是将客观的现实世界抽象为类、对象等,将操作等集中在一个类中,通过实例化的对象调用属性、方法,而不需要连接类内部的实现,且类内部的改变不会影响对象对属性、方法的调用
C#中常用的修饰符
public 公共的,人和地方都能访问
private 私有的,只能在类内部访问(类中的成员默认是私有的)
protected 受保护的,类内部和子类中能访问
internal 内部的,在程序集(命名空间)中可以访问(类默认是内部的,可以修改为公共的)
封装最常见的例子是属性对字段的保护
代码例子
private int _age;
public int Age
{
set
{
if (value<=0 || value>120)
{
_age = 0;
}
else
{
_age = value;
}
}
get
{
return _age;
}
}
代码解析:
private int _age 在堆中定义了一块私有空间
set 方法打开在这块空间写的锁,如无set方法则无法修改字段的值,可以修改属性Age的值来修改字段_age
get方法打开了这块空间读的锁,如无get方法则无法获取字段的值
通过属性的set方法,在设置字段的值的时候,0岁及以下的或120以上,都会设置为0岁,避免错误的输入导致错误。
封装不仅体现在字段属性上,还体现在方法上,而方法则主要表现在继承上。