C#基础 - 面向对象 - 封装

文章讲述了作者在复习C#基础知识时对封装概念的理解。通过生活中的例子和代码示例,解释了封装在程序设计中的应用,如将字段封装为属性以实现数据的隐藏和控制。作者讨论了直接使用字段与封装属性的区别,特别是在进行合法性检查和权限控制时的便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        背景:自毕业以后出来工作了也有几年了,期间前后端都在干,后端通过C#语言编写;由于自己水平问题,写出来的代码自己维护起来都费劲,犹如屎山一般;好些基础知识点第一次学习的时候没有消化掉,随着时间越来越长也逐渐忘记了。因此决定重新学习一下C#基础知识,为了避免再次遗忘,决定写文档记录自己所学。也希望路过的大佬看见小斯记录不对的地方,给出指导,非常感谢。

        总所周知, 面向对象三个特征:封装、继承、多态,下面就依依记录自己学习的理解。

        顾名思义,在我们日常生活中,封装有哪些实际例如呢?比如车子,开车我们只是转动方向盘和油门刹车就可以进行行驶,具体内部是如何实现的我们不需要知道;又例如,把一个礼物包装的很精美,也是一种形式的封装。

        在程序设计中,类、对象、方法也是封装的一种变现;将字段封装成属性、将多个属性封装成一个类;将一段代码封装成一个方法;将多个类封装成一个程序集,提供统一对外访问的接口。 这样设计的好处:此封装的调用者不用关注内部是如何实现,不能随意串改内部的实现,内部实现修改以后调用者部分不需要进行调整。下面以几个实例的代码来加深理解。

将字段封装成属性

PersonInfo personInfo = new PersonInfo();
personInfo.Age = 40;//通过属性赋值

Console.WriteLine(personInfo.Age);//通过属性读值

Console.ReadKey();


class PersonInfo
{

    /// <summary>
    /// 将_Age字段封装到Age属性中
    /// </summary>
    private int _Age;
    public int Age
    {
        get { return _Age; }
        set { _Age = value; }
    }
}

        通过以上代码分析,为什么需要将字段封装成属性呢,直接访问字段不可以吗,把_Age字段改成共有的,直接调用赋值。

PersonInfo personInfo = new PersonInfo();
personInfo.Age = 40;//通过属性赋值

Console.WriteLine(personInfo.Age);//通过属性读值

Console.ReadKey();


class PersonInfo
{
    public int Age;

}

         当然这样也是可以的,但是有个问题,假如我们要对年龄赋值的时候做一些合法性的限制;取值的时候需要做一些限制等就不是很方便;例如限制年龄在0-120岁之间,通过封装的属性就可以这么实现。

PersonInfo personInfo = new PersonInfo();
//就不需要在这里进行赋值前的判断了
personInfo.Age = 121;//通过属性赋值

Console.WriteLine(personInfo.Age);//通过属性读值

Console.ReadKey();


class PersonInfo
{

    /// <summary>
    /// 将_Age字段封装到Age属性中
    /// </summary>
    private int _Age;
    public int Age
    {
        get { 
            //这里也可以做一些权限校验,比如有这个权限才给返回年龄
            return _Age; 
        }
        set
        {
            //给字段设置值的时候做一些判断
            if (value <= 0 || value > 120)
                throw new Exception("年龄非常");
            _Age = value;
        }
    }
}

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值