黑马程序员--C#面向对象基础知识

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

             为了解决结构化程序设计的一些弊端,面向对象技术应运而生。它将数据和对数据的操作看做是一个不可分割的整体,力求将现实问题简单化处理。这样既符合人们的思维习惯,同时也有助于控制软件的复杂性,提高软件开发的效率,使其得到广泛的应用。目前其已经成为最为流行的软件开发方法之一。

1  面向对象编程的原理

    在现实世界中,事物都有一定的状态和行为。把事物的状态抽象到计算机语言中以后,就成了计算机中某一实体的属性了;把事物的行为抽象到计算机语言中,就成了具体的方法,或者叫做函数。面向对象编程思想正是来源于此。

2  事物的抽象集合--类

    通常把具有相同性质和功能的事物所构成的集合体叫做类。例如汽车、电脑、人、花、鸟、树等都可以看做是类。所有的动物可看做是动物类,所有的车可看做是车类,而具体的每一种动物都是动物类的一个实例,在OOP的术语中,叫做对象。

  2.1  类的声明

        声明即定义一个类,就像定义一个变量一样。因为类和变量一样,它也是一种数据类型,只是这种数据类型是用户自定义的。在C#语言中,定义一个类使用class关键字,另外,在class关键字前还可以加上一些类的属性集或者修饰符。

  2.2  类的成员和成员的声明

        类是对象概念在面向对象编程语言中的反映。在计算机语言中,类就是一种数据结构,是一种特定的数据组织形式。它包含数据成员,类似于某种属性;函数成员,类似于某种功能。就像人类的数据成员有身高、体重;函数成员有走路、思考、说话等。

  2.3  类的成员的访问

        访问类的成员,有一些不同的权限。在编写类时,可以对类的成员使用不同的访问修饰符,这些修饰符定义了访问它们的权限。它们有公有的(public)、私有的(private)、保护的(protected)、内部的(internal)。

  2.4  类的继承

                 在面向对象的程序设计中,引入了继承的概念。类是可以进行继承的,通过继承可以在一组相似的类之间建立一种父子关系。就像生活中一样,儿子类继承自父亲类,所以拥有父类的一切特征,但是儿子也有自己的个性。一个类从另一个类派生出来时,被派生的类叫做基类,而派生类从基类那里继承所有特性,派生类也可以作为其他类的基类。这样就从一个基类派生出来的多层类中形成了类的层次结构。这也是代码重用的常用方法。


3  事物的具体化个例--对象

             对象就是类抽象出来的具体实例,例如人类的实例就是世界上的每一个人。对象是面向对象应用程序的一个组成部件,这个组成部件封装了部分应用程序,这部分程序可以是一个过程、一些数据或一些更抽象的实体。

  3.1  对象的声明和访问

                其实在上面的示例中,已经演示了对象的声明和访问了。在C#中,.NET Framework中的所有类型都是对象。例如,变量类型是一个类,变量是一个对象。当创建好一个类后,用new关键字就能根据这个类创建一个对象出来。

  3.2  类与对象的关系

                类就是一类有相同属性物体的集合。在计算机中,它是一种抽象的数据类型,但是抽象的程度可能不同。而对象就是一个类的实例。

4  类的成员--方法

             方法是一种对象或类的成员,用来实现具体的某一个功能。例如说,在一个类中,讲它有哪一些成员方法,实际上就是讲这个类有什么样的功能。另外,有的时候讲方法其实也是在说函数,本节将对方法进行详细的讲解。

  4.1  方法的声明

                 方法和过去常说的函数类似,它包含了一系列语句的代码块,是类的功能实现。在C#语言中,每个执行指令都是在方法中完成的。在类或结构体中声明方法,需要指定访问级别,例如公有还是私有;还要注意写清楚返回值类型,例如整型。
            方法声明可以包含一些表示访问权限的修饰符,例如private、public、protected、internal。还可以包含new、static、virtual、override、sealed、abstract、extern修饰符。

  4.2  方法的参数

                 方法的参数前面其实已经用到了,例如在第1章中,提到了C#的入口函数static void Main(string[] args)。其中的“args”就是参数。C#的参数分多种类型,包括值类型、引用类型和指针类型3种。

  4.3  构造函数

                构造函数是类中比较特殊的成员函数,它也是一种方法。构造函数主要用来为对象分配存储空间,完成初始化操作,例如给类的成员变量赋值等。一般来说,构造函数一旦开始执行,那么对象的生命周期就开始了,最终它将以析构函数结束。如果一个类含有构造函数,在实例化该类的对象时就会调用。

  4.4  析构函数

                 析构函数是用来销毁程序占用的资源,它和构造函数的名字相同。但是,析构函数要在名字前加上一个波浪号(~)。当实例化一个类的对象后,这个对象在对象销毁时就会调用析构函数,例如释放对象占用的存储空间等。

  4.5  静态方法的声明

                在面向对象的技术中,方法有两种,即静态方法和非静态方法。在声明一个方法时,它的名称前有static关键字修饰,那么这个方法就称为静态方法。静态方法是不能对类的实例进行操作的,同时,也不能使用this关键字。

 

  4.6  非静态方法的声明

                 若声明一个方法时,在它的前面没有static修饰符,就可以把这个方法叫做非静态方法。非静态方法的作用是,用来对类某一个给定的实例进行操作,而且还可以用this关键字来访问非静态方法,用this关键字就相当于访问它本身。

  4.7  重载方法

                重载方法是指方法的名称相同,但各个方法中参数的数据类型、个数或顺序不同。只要类中有两个以上的同名方法,但是使用的参数类型、个数或顺序不同,调用时,编译器就可以根据接收的参数判断,决定调用哪个方法。

 

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

 

转载于:https://www.cnblogs.com/meloda/archive/2012/10/08/2715634.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值