欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

11.1 C# 类面向对象编程 封装性 学习笔记

程序员文章站 2022-07-16 09:13:37
...

1、封装概念
封装: 包起外界不必要知道的东西,只向外界展露可公示的东西。
在C#中,类的封装: 将类中的私有字段封装成为公有属性。
公有属性就是public的get和set方法。
封装优点:

  1. 良好封装能减少耦合(比如实现界面类和逻辑类的分离)。
  2. 类对外方法不变情况下,方法内部可以实现*修改
  3. 类具有稳定而标记清晰的对外方法,使用者只需调用,无须关心方法内部实现。
  4. 因为封装的类功能相对独立,因此能更好地实现代码复用。
  5. 可保护代码不被其他人无意中调用破坏,通过私有访问权限等实现保护。这里的代码保护不是指代码本身的加密,而是指对不想被外部更改的字段,使用私有访问来修饰
//枚举
enum Color{
    White,Blac,Yellow,Red,Other
}
class Cat{
    //类的成员默认是私有变量
    //字段:
    string catName;
    //动态常量字段是要分配内存空间,而静态就不需要。下面是动态常量
    readonly Color catColor = Color.Yellow; //C#枚举的调用赋值
    readonly double catPrice = 800.00;
    int shoutNumber; //叫的次数
    ///<summary>
    ///构造函数
    ///</summary>
    ///<param name="catName"></param>
    public Cat(string catName)
    {
        CatName = catName;
    }
    //属性:
    public string CatName{
        get{return catName;}
        set{catName = value;}
    }
    public Color CatColor{
        get{return catColor;}
    }
    public doubleCatPrice{
        get{return catPrice;}
    }
    public int ShoutNumber{
        set{shoutNumber = value;}
        get{return shourNumber;}
    }
    //猫叫的方法
    public void Shout(){
        int i = 0;
        string ShoutNum = "";
        do{
            ShoutNum+="喵";
            i++
        }while(i<=ShoutNumber);
    }
}

static void Main(string[] arg)
{
    Cat cat = new Cat("大白");
    cat.ShoutNumber = 5;
    cat.Shout();
}

2、字段 和 属性 的区别

  1. 字段其实是类的某一成员值。 string dogName = “小明”;
  2. 属性实质是方法(get和set方法)。
  3. 将字段的访问权限设置为public,就成了公有变量,其实公有字段与属性是不一样。
  4. 属性是对字段的封装,它使用get和set访问器来控制如何设置或返回字段值。 赋值和取值速度上:公共字段比使用属性速度要快,性能也好。
  5. 公共字段是public的缺点,对象的调用者就可以随便直接修改公有字段,值的内容是否合法,运行中是否会出现连带错误,是没有任何保障的。大大降低类的可重用性。
  6. 属性的优点:属性类似方法,在它里面,可以自行写代码对存入的变量的值进行特别处理。例如:遇到值不合法,可以在方法中写逻辑让变换成其他值或直接弹出警告窗口。这对该类的对象使用安全有很大的好处,在运行过程中,因公共字段值的错误而产生问题会大大减少。

在实际开发过程中,尽量使用属性,把所有字段设置成私有字段,如果外界要用到他们,则就把他们封装成属性,这样可以保证数据安全。
如果外界修改字段,会导致对象内部引起连带的其他状态改变,那么建议使用属性封装字段。
如果字段的变动不会引发对象内部的连带问题,是可以使用public,但通常还是只用属性来封装字段。

相关标签: C#学习笔记