小寒的blog
Programming is a darned hard thing—but I am going to like it.

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

声明类

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

public class Customer
{
    
//Fields, properties, methods and events go here
}

class 关键字前面是访问级别。在该例中,使用了 public,这表示任何人都可以基于该类创建对象。类的名称位于 class 关键字的后面。定义的其余部分是类的主体,用于定义行为和数据。类的字段、属性、方法和事件统称为“类成员”。

创建对象

尽管有时类和对象可互换,但它们是不同的概念。类定义对象的类型,但它不是对象本身。对象是基于类的具体实体,有时称为类的实例。

通过使用 new 关键字,后跟对象将基于的类的名称,可以创建对象,如下所示:

Customer object1 = new Customer();


创建类的实例后,将向程序员传递回对该对象的引用。在上例中,object1 是对基于 Customer 的对象的引用。此引用引用新对象,但不包含对象数据本身。实际上,可以在根本不创建对象的情况下创建对象引用:

Customer object2;

建议不要创建像这样的不引用对象的对象引用,因为在运行时通过这样的引用来访问对象的尝试将会失败。但是,可以创建这样的引用来引用对象,方法是创建新对象,或者将它分配给现有的对象,如下所示:

Customer object3 = new Customer();
Customer object4 
= object3;

此代码创建了两个对象引用,它们引用同一个对象。因此,通过 object3 对对象所做的任何更改都将反映在随后使用的 object4 中。这是因为基于类的对象是按引用来引用的,因此类称为引用类型。

类继承

继承是通过使用派生来实现的,而派生意味着类是使用基类声明的,它的数据和行为从基类继承。通过在派生的类名后面追加冒号和基类名称,可以指定基类,如下所示:

public class Manager : Employee
{
    
// Employee fields, properties, methods and events are inherited
    
// New Manager fields, properties, methods and events go here
}

当类声明基类时,为基类定义的所有类成员也成为新类的一部分。因为基类自身可能继承自另一个类,而后者又从另一个类继承,依此类推,最终类可能具有很多个基类。

示例

下面的示例定义一个公共类,其中包含一个字段、一个方法和一个称为构造函数的特殊方法。有关更多信息,请参见构造函数。然后使用 new 关键字将该类实例化。

public class Person
{
    
// Field
    public string name;

    
// Constructor
    public Person()
    {
        name 
= "unknown";
    }

    
// Method
    public void SetName(string newName)
    {
        name 
= newName;
    }
}
class TestPerson
{
    
static void Main()
    {
        Person person1 
= new Person();
        System.Console.WriteLine(person1.name);

        person1.SetName(
"John Smith");
        System.Console.WriteLine(person1.name);
    }
}

输出

unknown

John Smith

类概述

类具有以下特点:

  • 与 C++ 不同,C# 只支持单继承:类只能从一个基类继承实现。

  • 一个类可以实现多个接口。有关更多信息,请参见接口

  • 类定义可在不同的源文件之间进行拆分。有关更多信息,请参见分部类定义

  • 静态类是仅包含静态方法的密封类。有关更多信息,请参见静态类和静态类成员


posted on 2007-06-10 20:20  xhan  阅读(310)  评论(0编辑  收藏  举报