在C#中实现OPP概念

来源:互联网 发布:洞见知行投资管理 编辑:程序博客网 时间:2024/04/30 03:51
 万物是对象,把对象归纳为类,是归纳对象共性的过程。类和对象有着本质的区别。在类的基础上,把类实体化为一个实际存在的对象的过程被称为实例化。
  面对对象编程也采用了类的概念,把事物编成一个个“类”。在类中,用数据表示事物的状态,用函数实现事物的行为,这样就使编程方式和人的思维方式保持一致,极大地降低了思维难度。类(class)是C#类型中最基础的类型。类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中。类提供了用于动态创建类实例的定义,也就是对象(object)。
  定义C#中的类,语法如下:
     访问修饰符  class  <类名>
    {
      //类的主体
    }
 注:
 访问修饰符:
     public 修饰共有类型成员,该成员可以被其他类型成员访问。
     private 修饰私有类型成员,该成员只有自己对象才可以访问。
  除了public和private两个访问修饰符以外,在.NET中还有常见的两个访问修饰符internal和protected。字段在不声明访问修饰符的情况下默认是private,类的默认访问修饰符是internal。
 当我们需要在类中进行计算操作的时候,需要添加字段,而字段用来表示与类和对象相关联的数据。
 类的属性:属性是表示类的状态,当我们需要在类中描述对象的状态和特征时,需要在类中添加属性。
在C#中我们一般不会直接访问类中的字段,而是通过get和set访问器来访问,这种实现方式我们称之为属性:
  string_name;//姓名
         public string Name
        {
             get{ return_name; }
             set{ _name=value; } 
        }
其中:
  get 访问器用来返回相应私有字段的值,用return来返回。
  set 访问器用来给相应的私有字段赋值,用一个隐含的输入参数value赋值。
注意:
  1,定义一个属性时,属性类型必须和他所访问的字段类型一致。
  2,定义属性的也可以是自定义的类或者其他的数组。
在程序编码中除了书写代码以外,VisualStudio 还给我们提供了一个快捷的生成属性的方法,重构——封装字段。封装字段的快捷键是 Alt+R+F。
类的方法是类中除属性外的另外一个重要的成员。当需要类对象做一件事的时候就需要类的方法了,在类中定义方法的语法如下:
    访问修饰符  返回类型  方法名(参数)
   {
    //方法体
   }
注意:
  1,方法的返回值是指对象做完某个动作或做完某件事以后产生的结果,在类中是有返回类型决定的,方法的返回类型可以是基本的数据类型(int、string、bool等),也可以是最基本的对象类型object,还可以是void,如果一个方法返回了void那么这个方法就不需要返回值。
  2,方法在执行的时候有时候需要为方法传递一些参数,参数有多个的时候是用“,”分割的。
  3,调用类方法的步骤如下:
       ①将被调用的类实例化为一个对象。
         reader myreader = new reader();//实例化一个读者对象
       ②用对象调用它的方法。
         myreader.Read("asp.net技术详解",1);
方法的重载:
概念:让类以统一的方式来处理不同类型数据的一种手段。
要求:方法名相同,参数列表不同。
类型:参数类型不同 public string read(string bookName)
      参数个数不同 public string read(string bookName,int Age)
注意:在方法重载中,不允许仅仅是返回类型不同的方法重载,例如:
        public string read(string bookName)
        public int read(string bookName)
类的构造方法和析构函数
 构造函数:多用于在创建对象的时候对对象进行初始化。这个方法的名字和类名一样,而且没有返回类型。语法如下:
             class 类名
             {
                public 类名(参数列表)
                {
                   //方法体
                 }
             }
 构造函数可以重载,如下实例所示:
             class Reader
             {
                public Reader()
                {
                   //方法体
                }
                public Reader(string name)
                {
                   //方法体
                }
             }
 C#构造函数具有一些特殊的性质:
   ①C#构造函数的名字必须与类同名;
   ②C#构造函数没有返回类型,它可以带参数,也可以不带参数;
   ③声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;
   ④C#构造函数可以重载,从而提供初始化类对象的不同方法;
   ⑤若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空;
   ⑥可以使用public 、protected 、private 修饰符。
 析构函数:专用于执行清楚操作。语法如下:
             class 类名
             {
               ~类名 (参数列表)
                {
                   //方法体
                }
             }
 注意:
   析构函数不接受任何参数也没有任何返回值,一个类只能有一个析构函数,不能重载,而且不能显示或手动调用,只能由垃圾回收器自动调用。
索引器
 索引器是一类特殊的属性,通过索引器可以像引用数组一样引用自己的类。索引器类似于属性,不同之处在于他们的访问器采用参数。被称为有参属性。
 所有C#索引器都使用this关键词来取代方法名。class或struct只允许定义一个索引器,而且总是命名为this。
 索引器所采用的参数:
   ◇ get 访问器返回值。set 访问器分配值。
   ◇ this 关键字用于定义索引器。
   ◇ value 关键字用于定义由set索引器分配的值。
 索引器和属性有许多差别:类的每一个属性都必须拥有唯一的名称,而类里定义的每一个C#索引器都必须拥有唯一的签名(signature)或者参数列表(这样就可以实现索引器重载)。属性可以是static(静态的)而索引器则必须是实例成员。为C#索引器定义的访问函数可以访问传递给索引器的参数,而属性访问函数则不用参数。