zoukankan      html  css  js  c++  java
  • C# 封装

    封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。

    抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象

    C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。

    一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:

    public 公共的 类及类成员的修饰符 所有对象都可以访问 如空气
    private 私人的 类成员的修饰符 只能在类的内部访问 如钱包
    protected 受保护的 类成员的修饰符 只有该类对象及其子类对象可以访问,不管是不是在同一个程序集 如祖传家业
    internal 内部的 类和类成员的修饰符 同一个程序集(Assembly)的对象可以访问,一般是同一个应用(application)或库(library)  
    protected internal 受保护的内部的   如果是继承关系,不管是不是在同一程序集中都可以访问;如果不是继承关系只能在同一程序集中访问  
    partial   微软发明的类的访问修饰符 把一个类的代码写在2个文件中,运行时再合并成一个类  

    1.类class的访问权限
    类的访问修饰符只有两种:public、internal。如果class前面没有加任何修饰符的话,默认是internal
    public class:任何地方都可以访问到。
    internal class或class:只有同一个程序集中能访问到(程序集代表能生成exe或dll的项目,一个程序集中可以有多个命名空间)。例如:一个解决方案中有两个项目,就代表有两个程序集,两个程序集分别为A、B。其中A中有个class为internal级别的,那么B引用了A的程序集也是不能调用这个类。

    2.类成员(字段和方法)的访问权限
    类成员的修饰符可以为:public、private、protected、internal、protected internal。

    如果类成员(字段和方法)前面没有加有修饰符的话,默认访问权限是private

    但是构造函数默认访问权限为public

    3.接口interface的访问权限
    同class一样,可以为public和internal。
    但是接口中的方法默认访问权限为public,并且不能显示的定义其他访问类型。

    4.抽象类abstract class(该类只能作为父类被用于继承,而不能进行对象实例化)
    抽象类中必须有一个以上的抽象方法,访问类型可以定义为:public、protected、internal,不能是private

    5.枚举enum和结构struct权限
    枚举类型成员默认为public访问修饰符,且不能显示的使用其他修饰符。
    结构成员默认private修饰符,
    结构成员无法声明为protected成员,因为结构不支持继承。

    PS:命名空间和程序集的区别
    命名空间用于对类型进行逻辑分组。程序集则是程序的物理分组,对应于一个dll或exe文件。一个程序集中可以有多个命名空间。

  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/wodewei/p/11540473.html
Copyright © 2011-2022 走看看