您的位置: 网站首页 > 程序开发 > C#程序设计 > 第6章 C#面向对象 > 【6.1 定 义 类】

6.1 定 义 类

 

本章主要介绍C#中面向对象的相关知识。其中包括面向对象的基本概念、类的概念和使用方法,Visual Studio 2005中对面向对象的支持。C#中类的构成部分:包括属性和方法。在本章中还会介绍面向对象的一些高级概念包括抽象类、多态和接口等。

本章主要内容

&        面向对象中的类

&        Visual Studio 2005对面向对象的支持

&        类中的属性

&        类中的方法

&        抽象类

&        多态

&        接口

6.1     

类是面向对象概念中最基本的组成单位。

6.1.1  声明类

类是C#中功能最为强大的数据类型。像结构一样,类也定义了数据类型的数据和行为。程序员可以创建作为此类的实例的对象。C#中使用class关键字定义类。如下代码定义了一个名为MyClass的类:

class MyClass

{

}

6.1.2  声明类的静态特征

类是一种强大的数据类型。开发人员除了可以应用C#中默认提供的数据类型外,还可以使用类创建自定义的数据类型。使用类,可以对现实中的任意类型进行建模。如可以定义一个汽车类,其代码如下:

class MyCar

{

}

上述的代码定义了一个汽车类,但现在该汽车没有任何特征,而且什么也不能做。考虑真实的汽车,显然汽车应该有颜色特征,还应该有重量特征。在类中可以定义这些静态的特征,只需将其定义在类代码的大括号之间即可。如下的代码为汽车类添加了颜色特征和重量特征

class MyCar

{

    string Color;

    int Weight;

}

可以看到,汽车类的代码中又多了两个变量,分别是ColorWeight。这两个变量分别代表汽车的颜色和重量。在类的代码中可以根据实际情况添加类的静态特征,这些静态特征的声明可以是字段或属性。关于字段和属性的具体使用方法在后面的小节中还有介绍。读者此处只需了解类中可以对对象的静态特征进行描述。

6.1.3  声明类的动态行为

现实中的对象即有静态特征,又有动态行为。如汽车类,虽然我们用静态特征描述了汽车的颜色和重量,但显然汽车最重要的性质就是其机动性。这里可以用Run表示汽车的机动性。如下的代码为汽车添加了动态行为“Run”:

class MyCar

{

    string Color;

    int Weight;

   

    void Run()

    {

        Console.WriteLine(“汽车启动!”);

    }

}

在类的实现中,上述代码中的Run以及其他的动态行为被称为类的方法,在后面的小节中还有介绍。在类代码中实现的静态行为,可以进行调用。如上面代码中的Run则可以用MyCar.Run()方法进行调用。

6.1.4  创建类实例

在上面的几个小节中我们已经创建了一个简单的类,即汽车类。下面通过一个实例演示创建类实例的方法。

1.目的说明

创建一个Windows控制台应用程序,通过使用前面的MyCar类创建类的实例。

2.实现步骤

1)创建一个名为ClassInstance的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace ClassInstance

{

    class Program

    {

        static void Main(string[] args)

        {

            MyCar a = new MyCar();

            a.Run();

        }

    }

    class MyCar

    {

        string Color = "Red";

        int Weight = 1000;

        public void Run()

        {

            Console.WriteLine("汽车启动!");

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图6-1所示。

6-1  运行结果

4.代码分析

在上述实例中包含了MyCar即汽车类的完整代码。在Program类中创建了MyCar类的实例。创建实例的代码如下:

MyCar a = new MyCar();

如果有一个名为People的类,那么创建一个People类实例的代码应该如下所示:

People a = new People();

6.1.5  继承类

类的最大优点就是可以继承,这是面向对象的一项重要功能。如前面已经创建了一个汽车类MyCar,现在则要创建一个公共汽车类。这时可以想到,公共汽车是汽车的一种,具有所有汽车应该具有的性质,但又有其特殊之处。

这时可以使用面向对象中的继承,定义一个公共汽车类并使其继承汽车类的所有特性。然后再定义公共汽车特有的性质,这样就达到了代码重用的目的。首先借用前面小节中的MyCar代码:

class MyCar

{

    string Color = "Red";

    int Weight = 1000;

 

    public void Run()

    {

        Console.WriteLine("汽车启动!");

    }

}

接下来编写公共汽车的代码如下。

class MyBus : MyCar

{

   

}

显然,该公共汽车的类代码中什么功能都没有,也没有任何特性。但在类名MyBus的后面使用了一个冒号“:”,并且在后面紧跟着汽车类的类名MyCar。这种语法格式就被称为继承。下面充实一下MyBus类的代码并通过一个实例介绍继承的使用方法。

1.目的说明

创建一个Windows控制台应用程序,通过使用前面的MyCar类演示继承的使用方法。

2.实现步骤

1)创建一个名为ClassBus的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace ClassBus

{

    class Program

    {

        static void Main(string[] args)

        {

            MyBus a = new MyBus();

 

            a.Run();

 

            a.Start();

            a.Stop();

        }

    }

 

    class MyCar

    {

        string Color = "Red";

        int Weight = 1000;

 

        public void Run()

        {

            Console.WriteLine("汽车启动!");

        }

    }

 

    class MyBus : MyCar

    {

        public void Start()

        {

            Console.WriteLine("公共汽车出站!");

        }

 

        public void Stop()

        {

            Console.WriteLine("公共汽车进站!");

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图6-2所示。

6-2  运行结果

4.代码分析

上述实例中包含了MyCar即汽车类的完整代码和新编写的MyBus类代码。MyBus类代码中只包含StartStop两个行为,分别表示公共汽车出站和公共汽车进站。Program类中声明了一个MyBus的类实例a,并写下了如下的代码:

a.Run();

而在MyBus的代码中并没有包含Run的代码。运行时,该行代码产生了“汽车启动!”样式的输出。这样的情况完全依赖于面向对象中的继承,由于MyBus继承了MyCar,因此也继承了其行为。