现在的位置: 首页 > 综合 > 正文

面向对象程序设计:类与结构

2013年01月31日 ⁄ 综合 ⁄ 共 2321字 ⁄ 字号 评论关闭

 类与结构
C# 是面向对象的编程语言,它使用类和结构来实现类型(如 Windows 窗体、用户界面控件和数据结构等)。典型的 C# 应用程序由程序员定义的类和 .NET Framework 的类组成。

C# 提供了许多功能强大的类定义方式,例如,提供不同的访问级别,从其他类继承功能,允许程序员指定实例化的操作。

一、类声明
类是 C# 中功能最为强大的数据类型。像结构一样,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。与结构不同,类支持继承,而继承是面向对象编程的基础部分。

1 声明类

类是使用 class 关键字来定义的,如下面的示例所示:

public class Customer
...{
   private int x=10, y=15;
   public int ride()
    ...{
       return x*y;
    }
}
class mainclass
...{
static void Main()
...{
Customer s=new Customer();
System.Console.WriteLine(s.ride());
}
}
 

说明:
class 关键字前面是访问修饰符。在该例中,使用了 public,这表示任何人都可以基于该类创建对象。类的名称位于 class 关键字的后面。一对花括号中的内容叫类体,用于定义行为和数据。类的字段、属性、方法和事件统称为“类成员”。

常用的类访问修饰符如下所示:

1 public
public关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。

2 private

private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的

3 protected

protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问

4 internal
internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。

二、结构

结构是使用 struct 关键字定义的,struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面是结构的声明语法。

例如:
 
public struct PostalAddress
{
   ......
}

结构与类共享几乎所有相同的语法,结构适于表示 Point, Color 等轻量对象。尽管这些也可以表示为类,但在某些情况下,使用结构更有效。结构有如下特点:

1 结构是值类型,而类是引用类型。但通过一个称为装箱的过程可以将值类型转换为引用类型。

2 向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。

3 与类不同,结构的实例化可以不使用 new 运算符。

4 结构不能声明默认构造函数或析构函数。结构可以声明带有参数的构造函数。

5 一个结构不能从另一个结构或类继承,而且不能作为一个类的基。

6 所有结构都直接继承自 System.ValueType,后者继承自System.Object。

7 结构可以实现接口。

8 在结构中初始化实例字段是错误的。

★结构示例1

public struct CoOrds
...{
    public int x, y;

    public CoOrds(int p1, int p2)
    ...{
        x = p1;
        y = p2;
    }
}

class TestCoOrds
...{
    static void Main()
    ...{
        CoOrds coords1 = new CoOrds();
        CoOrds coords2 = new CoOrds(10, 10);
        System.Console.Write("CoOrds 1: ");
        System.Console.WriteLine("x = {0}, y = {1}",coords1.x, coords1.y);
        System.Console.Write("CoOrds 2: ");
        System.Console.WriteLine("x = {0}, y = {1}",coords2.x, coords2.y);
    }
}

 

★结构示例2

本示例说明了结构特有的一种功能。它在不使用 new 运算符的情况下创建 CoOrds 对象。如果将 struct 换成 class,程序将不会编译。

using System;
public struct CoOrds
...{
    public int x, y;
    public CoOrds(int p1, int p2)
    ...{
        x = p1;
        y = p2;
    }
}

class TestCoOrdsNoNew
...{
    static void Main()
    ...{
        CoOrds coords1;
        coords1.x = 10;
        coords1.y = 20;
        Console.Write("CoOrds 1: ");
        Console.WriteLine("x={0},y={1}", coords1.x, coords1.y);
    }
}

★结构示例3

public struct CoOrds
...{
    public string x;

    public CoOrds(string p)
    ...{
        x = p;
    }
}

class TestCoOrds
...{
    static void Main()
    ...{
        CoOrds a = new CoOrds("ssssss");
        System.Console.Write(a.x);
       
    }
}

百思特网络 www.bestwl.com

抱歉!评论已关闭.