面向对象-封装

血红的双手。 提交于 2020-01-27 01:11:10

面向对象-封装

什么是封装

封装是针对某一些数据进行,压缩、包装成一个使用方便、安全的实例

  1. 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
  2. 抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。
  3. 封装使用访问修饰符来实现。一个访问修饰符定义了一个类成员的范围和可见性。

封装都有哪些封装

  1. 类就是一个封装
  2. 属性封装
  3. 函数封装

封装的注意事项

  1. 要搞清楚封装的这个目标的一个访问范围
  2. 封装的数据都有哪些

访问修饰符

什么是访问修饰符

访问修饰符就是用来设置控制封装的这个目标的权限范围

权限范围:这个目标可以被哪些对象在什么地方可以访问到这个目标的数据

访问修饰符都有哪些

public

public访问修饰符允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问。所有类或成员,任何代码均可访问该项

访问权限最大

意味着最不安全

范围:类自己、同一个程序集、同一个项目中、和自己有血缘关系的类

private

private访问修饰符允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。只有同一个类中的函数可以访问它的私有成员。即使是类的实例也不能访问它的私有成员。

类的成员的默认访问修饰符是private

访问权限最小

意味着针对于对象自己而言最安全

范围:类自己

protected

protected访问修饰符允许子类访问它的基类的成员变量和成员函数。这样有助于实现继承。类和内嵌类的成员,只有派生类可以访问该项

范围:类自身、具有血缘关系的类

internal

internal访问修饰符允许一个类将其成员变量和成员函数暴露给当前程序中的其他函数和对象。换句话说,带有 internal访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。

类的默认访问修饰符是internal

范围:类自身、同一程序里面的所有类

protected internal/internal protected

protected internal访问修饰符允许一个类将其成员变量和成员函数对同一应用程序内的子类以外的其他的类对象和函数进行隐藏。这也被用于实现继承。类和内嵌类的所有成员,只能包含它的程序集和派生类型的任何代码中访问该项

范围:类自身、同一程序里面的所有类、有血缘关系的类

属性封装

什么是属性封装

  1. 属性(Property)是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用访问器(accessors)让私有域的值可被读写或操作。

  2. 属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的访问器(accessors)。

  3. 例如,有一个名为Student的类,带有 age、name 和code的私有域。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性。

  4. 访问器

    属性(Property)的访问器(accessor)包含有助于获取(读取或计算)或设置(写入)属性的可执行语句。访问器(accessor)声明可包含一个get访问器、一个set访问器,或者同时包含二者。

属性和字段有什么关系

属性不保存数据,字段用来存储数据

属性必须依赖一个字段

class People
    {
        string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        int Age;
        public int _Age
        {
            get { return Age; }
            set
            {
                if (value<=1)
                {
                    Age = 1;
                }
                else
                {
                    Age = value;
                }
            }
        }
 static void Main(string[] args)
        {
            People p = new People();
            p.Name = "zhangsan";
            p._Age = -100;
            Console.WriteLine(p._Age);
            Console.ReadLine();
        }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!