c#字段封装

原文:https://blog.csdn.net/hamber_bao/article/details/6504621

封装是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访问器的灵活运用,可以保障类中字段的安全。
 

使用封装还可以实现对属性的只读、只写:

1 public string Name { get; private set; }//只读
2 public string Name { private get; set; }//只写

这样写属性时,编译器会自动创建private string name。这种是会自动实现后备成员变量的自动实现属性。

如果是:

1 public string Name { get; set; }

这样的没有啥限定的属性,其实和公有字段没多大区别了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值