首页 > 代码库 > 面向对象(一)封装 命名空间 访问修饰符等

面向对象(一)封装 命名空间 访问修饰符等

一、封装

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

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

 

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)
  {
    函数体
  }
}

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

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

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

 

面向对象(一)封装 命名空间 访问修饰符等