黑马程序员_面向对象编程初步

来源:互联网 发布:递归算法什么意思 编辑:程序博客网 时间:2024/06/05 14:46

  ----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

 面向对象编程(Object-Oriented Programming,OOP)技术解决了传统编程技巧带来的许多问题,之前学习的编程方法称为函数(或过程)化编程,常常会导致所谓的单一应用程序,即所有的功能都包含在几个代码模块中(常常是一个代码模块)。而是用OOP技术,常常要使用许多代码模块,每个模块都提供特定的功能,每个模块都是孤立的,甚至与其它模块完全独立。这种模块化编程方法提供了非常大的多样性,大大增加了重用代码的机会。

     首先介绍面向对象编程中的对象:

对象就是OOP应用程序的一个组成部件,这个组成部件封装了部分应用程序,这部分程序可以是一个过程、一些数据或一些更抽象的实体。

 简单地说,对象非常类似于结构类型,包含变量成员和函数类型。它所包含的变量组成了存储在对象中的数据,其中包含的函数可以访问对象的功能。

 C#中的对象是从类型中创建的,就像前面的变量一样。对象的类型在OOP中有一个特殊的名称:类。可以使用类的定义实例化对象,这表示创建该类的一个实例。“类的实例”和对象含义相同,注意“类”和“对象”是完全不同的概念。

 1.属性和字段

可以通过属性和字段访问对象中包含的数据。这个对象数据可以用于区分不同的对象,因为同一个类的不同对象在属性和字段中存储了不同的值,包含在对象中的不同数据构成了对象的状态。

2.方法

“方法”这个术语用于表示对象中的函数。这些函数调用的方式与其它函数相同,使用返回值和参数的方式也相同。

方法用于提供访问对象的功能。与字段和属性一样,方法也可以是公共的或私有的,按照需要限制外部代码的访问。它们常常使用对象状态影响它们的操作,在需要时访问私有成员。


其次我们需要理解:一切都是对象

实际上,C#和.NET Framework中的所有东西都是对象。控制台应用程序中的Main()函数就是类的一个方法。每个变量类型都是一个类,每个命令都是一个属性或方法,例如,

<String>.Length和<String>.ToUpper()等。句点字符把对象实例名和属性或方法名分隔开来,方法名后面的()把方法与属性区分开来。


然后说说对象的生命周期:

每个对象都有一个明确定义的生命周期,除了“正在使用”的正常状态之外,还有两个重要的阶段;

     ●  构造阶段:对象最初进行实例化的时期。这个初始化过程称为构造阶段,由构造函数完成。

     ●  析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存,这由析构函数完成。

1.构造函数

对象的初始化过程是自动完成的。我们不需要找一个适于存储新对象的内存空间。所有的类定义都至少包含一个析构函数。在这些构造函数中,可能有一个默认的构造函数,该函数没有参数,与类同名。类定义还可能包含几个带有参数的构造函数,称为非默认的构造函数。代码可以使用它们以许多方式实例化对象,例如给存储在对象中的数据提供初始值。

在C#中,用new关键字来调用构造函数。例如,可以用下面的方式通过其默认的构造函数实例化一个Person对象:Person  onePerson=new Person(); 还可以用非默认的构造函数来创建对象。例如,Person类有一个非默认的构造函数,它使用一个参数在初始化时设置人的性别:Person  onePerson=new Person("man");

构造函数与字段、属性和方法一样,可以是公共或私有的。在类外部的代码不能使用私有构造函数实例化对象,而必须使用公共构造函数。这样,就可以要求类的用户使用非默认的构造函数(把默认构造函数设置为私有的)。

2.析构函数

.NET Framework使用析构函数清理对象。一般情况下,不需要提供析构函数的代码,而是由默认的析构函数自动执行操作。但是,如果在删除对象实例前,需要完成一些重要的操作,就应提供特定的析构函数。


最后谈谈静态和实例化成员

属性、方法和字段等成员是对象实例所特有的,此外,还有静态成员(也成为共享成员,尤其是在Visual Basic),例如静态方法,静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将它们看作是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但与对象实例无关的命令。在使用静态成员时,甚至不需要实例化对象。

例如,Console.WriteLine()和Convert.ToString()方法就是静态的,根本不需要实例化Console或Convert类(如果试着进行这样的实例化,操作会失败,因为这些类的构造函数不是可公共访问的)

1.静态构造函数

使用类中的静态成员时,需要预先初始化这些成员。在声明时,可以给静态成员提供一个初始值,但有时需要执行更复杂的初始化,或者在赋值、执行静态方法之前执行某些操作。

使用静态构造函数可以执行此类初始化任务。一个类只能有一个静态构造函数,该构造函数不能有访问修饰符,也不能带有任何参数。静态构造函数不能直接调用,只能在下述情况下执行:

            ●  创建包含静态构造函数的类实例时

            ●  访问包含静态构造函数的类的静态成员时

在这两种情况下,会先调用静态构造函数,之后实例化类或访问静态成员。无论创建了多少个类实例,其静态构造函数都只调用一次。

2.静态类

我们有时希望类只包含静态成员,且不能用于实例化对象(如Console)。为此,一种简单的方法是使用静态类,而不是把类的构造函数设置为私有。静态类只能包含静态成员,不需要实例构造函数,因为按照定义,它根本不能实例化。但静态类可以有一个静态构造函数。

 ----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

 详细请查看:http://edu.csdn.net


原创粉丝点击