面向对象(一)

一、 概述

面向对象,大家应该非常熟悉这个说法了吧!这个面向对象,那个也是面向对象,但是究竟什么是面向对象呢?这次教程我就把自己的理解说一说!由于C是来自微软的家族,所以在C#中有结构和类,其实它们都是一种模板。

二、

1.          数据成员

a)          数据成员包括:字段,常量,事件

b)         数据成员可以是静态数据也可以是非静态的。用static进行声明。

c)          常量的声明用const关键字

d)         注意:在JAVA中我们可以称数据成员是属性,而在C#中我们不可以这么说,原因在本文中会讲到。

2.          函数成员

a)          函数成员包括:方法、属性、构造函数、析构函数、索引器等

b)         方法:

                                                                   i.              方法分为:①实例方法②静态方法

                                                                  ii.              实例方法用于处理对应的实例化对象。专用!

                                                                iii.              静态方法处理所有类的实例化对象。公用!

                                                                iv.              方法的声明:访问修饰符 返回类型 方法名(参数列表)

                                                                  v.              方法的调用: 对象.方法名(参数列表)

                                                                vi.              注意:给方法传递参数可以是引用类型或者值类型(值类型和引用类型的区别,在我的博客有详细的介绍)。在C# 中所有的参数都是通过值来传递的。但是也可以强制使值类型参数通过引用来传递!这时候使用关键字ref

                                                               vii.              无论是值传递还是引用传递,任何变量都必须初始化!!

                                                             viii.              方法也可以进行重载,方法的签名有名称,参数个数,参数类型。

方法重载即同名不同参数(参数个数不同或者参数类型不同),这里注意:返回类型不同不一定是方法重载!

c)          属性

                                                                   i.              不同于JAVA中我们常说的属性。在C#中,属性是:一个方法或者是一对方法。功能(类似于JAVA类中的getset方法)是用来给类的字段进行设置值和取得类的字段的值。

                                                                  ii.              语法:SomeProperty就是属性

public string SomeProperty

{

get

{

   return propertyValue;

}

set

{

   propertyValue = value;

}

}

                                                                iii.              Get访问器不带参数,返回类型必须是属性声明的类型

                                                                iv.              Set访问器不需要人工传入参数,有一个默认的参数value

                                                                  v.              如果属性里面只有get,则属性称为只读属性,只有set则属性称为只写属性(基本上不会使用,如果为了某个目的,可以用别的方法替代),如果都有,则称为读写属性。

                                                                vi.              属性的访问修饰符

C#中不允许给属性的getset访问器设置不同的访问修饰符。

                                                               vii.              内联: C++中有,其实这是环境进行的操作,C#就是由CLR选择的一种降低系统开销的方法。

d)         构造函数

                                                                   i.              语法:访问修饰符  类名

                                                                  ii.              构造函数主要用来初始化成员变量,但是也可以执行一些其他的动作。

                                                                iii.              如果在定义类时,用户没有显示提供构造函数,编译器会自动添加一个默认的无参构造函数,这个构造函数会把所有的成员变量初始化为标准的默认值。如果用户提供了带参数(如果是无参的,其实没有什么意义)的构造函数,编译器就不会提供默认的构造函数。构造函数同样可以进行重载。

                                                                iv.              使用私有(Private)或保护(Protected)构造函数的作用:

①类永远不会被实例化

②通过类的静态方法可以获得类的实例化对象

                                                                  v.              使用静态构造函数的作用:

①类的一些静态字段或属性,需要在第一次使用类前,进行初始化。

注意:静态构造函数不能带任何参数,一个类只能有一个静态构造函数。在C#中静态构造函数通常在第一次调用类的成员之前执行。

                                                                vi.              从其他构造函数中调用构造函数

参看代码实例部分!

e)          析构函数

                                                                   i.              语法: ~ 类名{}

                                                                  ii.              作用:用于销毁非托管资源

三、 结构

1.          定义:

Struct 结构名

{

}

2.          与类的区别:

a)          结构是值类型,类是引用类型。

b)         结构不支持继承

c)          结构总是有一个默认的无参构造函数,并且不允许用户替换!

四、 Object

所有.NET类都是派生于System.Object。结构派生于System.ValueType,进而有间接派生自System.Object。既然所有的类都是派生于System.Object,那么这些类不但可以访问自己定义的方法和属性,也可以访问System.Object定义的许多公共或受保护的成员方法。

posted @ 2009-02-22 22:57  bant  阅读(132)  评论(0)    收藏  举报