C#中为什么使用字段封装
来源:互联网 发布:sql 取当前时间 编辑:程序博客网 时间:2024/06/06 14:26
封装是OOP(面向对象编程)三大特征之一。
为什么需要封装?
首先看以下代码
- public class Student
- {
- public int age;
- public string name;
- public void say()
- {
- Console.WriteLine("大家好,我是{0},今年{1}岁",name,age.ToString());
- }
- }
试着编写测试类,实例化对象,调用其say方法
- Class Test
- {
- static void Main()
- {
- Student student = new Student();
- student.age = -20;
- student.name = "hamber";
- student.say();
- }
- }
输出结果:我是hamber,今年-20岁。
以上的赋值是不符合实际生活的。
这就需要我们对类中的敏感字段进行有效约束,这就用到了C#中的属性.
- public class Student
- {
- private int age;
- public int Age
- {
- get{return age;}
- set{age = value;}
- }
- public string name;
- public void say()
- {
- Console.WriteLine("大家好,我是{0},今年{1}岁",name,Age.ToString());
- }
- }
在C#中,我们通常不会直接访问类中的字段,而是通过get和set访问器来访问,这种实现方式我们称为属性。
- private int age;
- public int Age
- {
- get{return age;}
- set{age = value;}
- }
get访问器用来返回相应的私有字段的值。用return来返回。
set访问器用来设定相应的私有字段的值,可以看做是一个隐含的输入参数。
如何使用属性:
(1)将类中的敏感字段私有化
(2)添加get、set访问器
(3)在其中书写逻辑判断
注意事项:
(1)定义属性时,类型必须与它所访问的字段类型一致。
(2)一般情况下,字段的名称是小写的,属性的名称与字段名称一样,只是首字母要大写。
属性的类型
定义属性,我们可以给他设定值,也可以获取它的值。如果想保护属性关联的字段,则只允许读数据,或者只允许写数据,
那么应该如何设定呢?
属性除了可以约束数据访问外,还可以设定设置读写属性,来限定它的访问类型,我们可以设置该属性为只读属性,这种情况下,我们就只能读取字段的值而不能赋值,属性的访问分类为以下三种:
---只读属性,只包含get访问器
---只写属性,只包含set访问器
---读写属性,包含get和set访问器
get和set访问器的灵活运用,可以保障类中字段的安全。
- C#中为什么使用字段封装
- C#字段为什么用属性封装?
- C#字段封装器
- C#字段封装
- 为什么要对字段封装属性
- C#中为什么要使用委托的?
- C#中的字段封装(set, get)
- 使用C#封装RdpClinet
- c# 为什么结构中不能有实例字段初始设定值项
- C#中综合使用字段,属性和方法的实例
- 为什么要用set,get方法封装字段
- C#中使用 StackExchange.Redis 封装属于自己的 RedisHelper
- c#中为什么又重新使用了goto语句
- SNMP中变长Length字段的封装和解封装
- 字段封装
- Java中为什么字段不能被重写
- Java中为什么字段不能被重写
- 为什么排序字段使用浮点数
- 4大 Java OSGi 框架比较 (Knopflerfish, Apache Felix, Equinox, Spring DM)
- Makefile全解析
- Ubuntu11.10 设置默认Terminal为Terminator
- MTL_SERIAL_NUMBERS.CURRENT_STATUS
- 真相:NFC技术去年处于炒作顶峰 正在走下坡路
- C#中为什么使用字段封装
- 最少拦截系统
- 用ini文件远程连接mysql
- 关于gforge用户权限的一点理解 .
- 常用正则表达式
- 运筹帷幄DB2——从Oracle运维转型
- jQuery 使用手册(六)
- Strategy策略模式Java示例学习
- 北京思科总部之行 体验一体化视频系统