zoukankan      html  css  js  c++  java
  • 面向对象(一)封装 命名空间 访问修饰符等

    一、封装

    封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

    封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部借口,以特定的访问权限来使用类的成员。

    public class 类名
    {
      //成员变量
      private 数据类型 _属性名;
      //属性
      public 数据类型  属性名;
      {
        get{return _属性名;}
        set{_属性名 = value;}
      }
      public 数据类型  属性名2;
      {
        get{return _属性名 + "字符串";}
      }
      //成员方法
      public 函数名(变量1,变量2)
      {
        函数体
      }
    }

    这就是一个典型的封装,包括三部分:成员变量,属性,成员方法。

    成员变量是类的基本属性。

    属性是对成员变量的保护,对成员变量的属性值设置与修改进行过滤。

    一个成员变量可以有多个属性。多个属性可以对成员变量的属性值进行不同类的输出和设置。只设置get是只读属性。

    成员方法是一种函数,

    可以对类内的数据进行处理,并返回值。

    二、访问修饰符

    访问修饰符是对类,属性,方法的公开等级进行分类的等级制度。

    1、public  -    公开的, 只要引用了命名空间就能用。        访问要求最低。

    2、private  -   私有的,访问仅限于包含该成员的类。         访问要求最高。

    3、internal  -  默认的,访问仅限于当前命名空间。            访问要求次低。

    4、protected  -  被保护的,类的内部及其子类可以访问。  访问要求次高。

    三、命名空间(namespace) /程序集

    命名空间是对各种代码的一种管理方式,用于组织和重用代码。

    由于词汇量的限制,数据和函数的命名会出现不可避免的重复,命名空间则对此做出了限制:只有在命名空间内,该名称唯一,这样就防止了冲突。

    using关键词,用于表明程序使用的是给定命名空间中的名称。

    比如using System;表明使用了System命名空间,这个空间定义了Console,那么就可以直接调用Console。

    自定义命名空间时,如果在文件夹内创建,命名空间名字会变成 “文件夹名.文件名”。这个名字可以随意修改,去掉文件夹名也可以。

    在调用命名空间时,和当前命名空间处于同一文件夹下时可以直接调用,如果不在,比如在同一文件夹下的另一个文件夹里,那么可以用 “   using 命名空间名字; ”调用。

    四、静态类

    public static class math
    {
      public static decimal sum(decimal a,decimal b)
            {
                    return a+b;
            }
    }

    static  -  静态的,将类定义为一个静态类,里面的数据一般都是静态的,也可以包含普通数据和方法,但一般建立静态类时只用静态数据和方法。

    普通类不可包含静态数据和方法。

    静态类不需要实例化,可以通过 类名.属性 直接 引用。

    五、构造函数

    构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

    构造函数在类中是默认隐藏的,也可以写出来。

    public class 类名
    {
       //构造函数
       public 类名()
       {
           //设置默认值
          _属性名 = 默认属性值;
       }
      //成员变量
      private 数据类型 _属性名;
      //属性
      public 数据类型  属性名;
      {
        get{return _属性名;}
        set{_属性名 = value;}
      }
      //成员方法
      public 函数名(变量1,变量2)
      {
        函数体
      }
    }

    构造函数的名字必须和类名一样。

    实例化就是引用构造函数的过程。

    可以在构造函数内给属性设定默认值。

  • 相关阅读:
    poj 3074(DLX)
    zoj 3209(DLX)
    hdu 4531(模拟+BFS+DFS)
    hdu 2065(递推+矩阵优化)
    poj 3714 (最近点对)
    zoj 3690(递推+矩阵优化)
    poj 3076(DLX)
    hdu 4533(一种很巧妙的方法|线段树+扫描线)
    hdu 4513(模拟)
    sql server 2008 评估已过期。
  • 原文地址:https://www.cnblogs.com/shenyuyaqing/p/7093830.html
Copyright © 2011-2022 走看看