• 类与对象


        与使用 C语言等结构化编程语言不一样,使用  C#编程,所有的程序代码几乎都放在类

    中,不存在独立于类之外的函数。因此,类是面向对象编程的基本单元。

          在绝大多数面向对象语言中,一个类都可以包含两种成员:字段(Field)与方法(Me

    thod)。字段与方法这两个概念是面向对象理论的术语,是通用于各种面向对象语言的。

    而在各种的具体面向对象语言(比如 C#)中,可以简单地这样理解:

    字段即变量,方法即函数。

          类的字段一般代表类中被处理的数据,类的方法大多代表对这些数据的处理过程或用于

    实现某种特定的功能,方法中的代码往往需要访问字段保存的数据。

          在 C#中,定义若干个变量,写若干个函数,将这些代码按以下格式汇集起来,再起个

    有意义的名字,就完成了一个类的定义:

    [public|private] class类名

    {

    [public|private]数据类型变量名;

    [public|private]数据类型函数名(参数列表)

    {

    }

    }

          在上述类的定义中,方括号代表这部分可选,而竖线则代表多选一。声明为 public的变

    量和函数可以被外界直接访问,与此对应,private的变量与函数,则为类的私有成员,只能

    由类自己使用。

          下面简要介绍组成类的基本成员。

    2.1类的字段

          字段(Field)代表了类中的数据,在类的所有方法之外定义一个变量即定义了一个字

    段。在变量之前可以加上 public、private和  protected表示字段的访问权限。以下代码展示了

    在类 Student中定义的两个公有字段  Age和  SN,外界可以通过类 Student创建的对象来读取

    或设置这两个字段的值。

          可以在定义字段的同时给予一个初始值,如下所示:

    2.2类的方法

    (1)函数的概念

          在程序开发过程中,经常发现多处需要实现或调用某一个公用功能(比如选择一个文

    件),这些功能的实现都需要书写若干行代码。如果在调用此功能的地方重复书写这些功能

    代码,将会使整个程序中代码大量重复,会增大开发工作量,增加代码维护的难度。

          为了解决代码重复的问题,绝大多数程序设计语言都将完成某一公用功能的多个语句组

    合在一起,起一个名字用于代表这些语句的全体,这样的代码块被称为函数(function

    引入函数概念之后,程序中凡需要调用此公用功能的地方都可以只写出函数名,此名字

    就代表了函数中所包含的所有代码,这样一来,就不再需要在多个地方重复书写这些功能代

    码。

          函数的出现,标志着软件开发进入了结构化编程的时代。调用和编写各种函数是程序

    员在结构化编程时的主要工作之一。

          C#中一个函数的语法格式如下所示:

    返回值类型     方法名(参数列表)

    {

    语句1;

    语句2;

    //…

    return表达式;

    }

          下面是一个典型的 C#函数示例:

          函数需要向外界返回一个值,由 return语句实现。

          如果一个函数没有返回值或不关心其返回值,则将其返回值定义为 void。

    (2)方法的定义与使用

          放在一个类中的函数(通常附加一个存取权限修饰符如  public和   private)称为

    method

     

          访问一个方法的最基本方式是通过类创建的对象。例如以下代码在类  MathOpt中定义

    了一个 Add()方法:

    public class  MathOpt

    {

    public int Add(int x, int y)

    {

    return x + y;

    }

     }

           则可以通过使用 new关键字创建类  MathOpt的对象来访问此  Add()方法:

     class  Program

    {

    static void Main(string[] args) 

    {

    //创建MathOpt类的对象

    MathOpt obj = new  MathOpt();

     //通过对象调用类的方法,结果保存在局部变量中

    int result = obj.Add(100, 200);

    //……

    }

    }

    (3)方法重载

          方法重载是面向对象语言(如 C#)对结构化编程语言(如  C)的一个重要扩充,请看

    以下代码:

    class  MathOpt

    {

    //整数相加

    public int Add(int x, int y)

    {

    return x + y;

    }

    //浮点数相加

    public double Add(double x, double y)

    {

    return x + y;

    }

    }

    }

    上述两个函数有以下独特之处:

    (1)函数名相同,均为 Add;

    (2)参数类型不同,一个为 int,另一个为 double。

    这两个同名的函数彼此构成了重载(Overload关系。

    重载函数的调用代码:

    MathOpt mathobj =  null;//定义MathOpt对象变量

    mathobj = new  MathOpt();//创建对象

    int IResult=mathobj.Add(100, 200);//调用类的整数相加方法

    double FResult = mathobj.Add(5.5, 9.2); //调用类的浮点数相加方法

    Console.WriteLine("100+200=" + IResult ); //输出结果

    Console.WriteLine("5.5+9.2=" + FResult ); //输出结果

          请注意标为粗体的两个方法调用语句。传给方法实参为浮点数时,将调用参数类型为

    double的    Add(double  ,  double)方法,传给方法的实参为整数时,调用参数类型为int的Add(int,int)方法。

          函数重载是面向对象语言对结构化语言特性的重要扩充,在面向对象的编程中应用极广。 

          两个构成重载关系的函数必须满足以下条件:

         (1)函数名相同。

         (2)参数类型不同,或参数个数不同。

    需要注意的是,函数返回值类型的不同不是函数重载的判断条件。

    比如,函数

    public long Add(int x, int y){……}

    就不与函数

    public int Add(int x, int y) {……}

    构成重载关系,因为这两个函数的实参类型和数目都相同,仅函数返回值类型不同。

    另外要注意 C#是区分大小写的语言,因此,如果一个类中有以下两个函数:

    public long add(int x, int y){……}

    public int Add(int x, int y) {……} 

          则可以通过编译并且程序可以运行,但这并不是说这两个函数构成了重载关系,事实上,

    C#认为这是两个完全不同的函数,彼此之间一点关系也没有!

     

     

  • 相关阅读:
    Android App Bundle 使用指南
    Homebrew国内源
    Mac下配置环境变量不生效问题
    CocosCreator1.x配置打包Android App Bundle
    Android读取Json文件的工具类
    Cocos Creator 坐标转换
    XCode真机调试不了,提示"Please reconnect the device"
    Canvas: trying to draw too large(134374464bytes) bitmap.
    Modbus主从关系几点记录
    当前时间加上几天
  • 原文地址:https://www.cnblogs.com/LCL390/p/4300321.html
Copyright © 2020-2023  润新知