第三章 面向对象编程基础.ppt
《第三章 面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《第三章 面向对象编程基础.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第三章三章三章三章 面向对象编程基础面向对象编程基础面向对象编程基础面向对象编程基础本章学习目标本章学习目标理解理解 C#中类和对象的概念中类和对象的概念熟悉熟悉C#中类及其成员的定义中类及其成员的定义类声明类声明类成员类成员掌握属性的用法掌握属性的用法set访问器访问器get访问器访问器掌握掌握C#中方法的定义与用法中方法的定义与用法掌握不同参数传递的方法掌握不同参数传递的方法第第三章三章 面向对象编程基础面向对象编程基础3.1 面向对象概念面向对象概念3.2 类类3.3 方法方法3.4 属性属性3.1 面向对象概念面向对象概念3.1.1 对象、类、实例化对象、类、实例化3.1.2 面
2、向对象程序设计语言的三大原则面向对象程序设计语言的三大原则3.1.1 对象、类、实例化对象、类、实例化在面向对象程序设计技术中,在面向对象程序设计技术中,对象对象是具有属性(又称状态)是具有属性(又称状态)和操作(又称方法、行为方式和消息等)的实体。对象的和操作(又称方法、行为方式和消息等)的实体。对象的属性表示了它所处于的状态;对象的操作则用来改变对象属性表示了它所处于的状态;对象的操作则用来改变对象的状态达到特定的功能。的状态达到特定的功能。类类是在对象之上的抽象,它为属于该类的全部对象提供了是在对象之上的抽象,它为属于该类的全部对象提供了统一的抽象描述。统一的抽象描述。3.1.2 面向对
3、象程序设计语言的三大原则面向对象程序设计语言的三大原则封装封装封装就是把对象的全部属性和全部服务结合在一起形成一个封装就是把对象的全部属性和全部服务结合在一起形成一个不可分割的独立单元;不可分割的独立单元;封装的目的在于将对象的使用者与设计者分开,使用者不必封装的目的在于将对象的使用者与设计者分开,使用者不必了解对象行为的具体实现,只需要用设计者提供的消息接口了解对象行为的具体实现,只需要用设计者提供的消息接口来访问该对象。来访问该对象。继承继承继承机制的优势在于降低了软件开发的复杂性和费用,使软继承机制的优势在于降低了软件开发的复杂性和费用,使软件系统易扩充。件系统易扩充。多态性多态性多态性
4、是指同一个消息或操作作用于不同的对象,可以有不多态性是指同一个消息或操作作用于不同的对象,可以有不同的解释,产生不同的执行结果;同的解释,产生不同的执行结果;多态性有两种,一种是静态多态,一种是动态多态。多态性有两种,一种是静态多态,一种是动态多态。3.2 类类3.2.1 类的声明类的声明3.2.2 类的成员类的成员3.2.3 构造函数构造函数3.2.4 析构函数析构函数3.2.1类的声明类的声明访问修饰符访问修饰符 class 类名类名:基类基类 类主体类主体 访问修饰符:访问修饰符:public:表示不限制对类的访问;:表示不限制对类的访问;internal:可被同一个项目的程序访问;可被
5、同一个项目的程序访问;abstract:表示一个抽象类,不能实例化,只能作为基类;表示一个抽象类,不能实例化,只能作为基类;sealed:表示一个密封类,不能被继承。表示一个密封类,不能被继承。说明:说明:如果对类不指定访问修饰符,则类的默认访问修饰符为如果对类不指定访问修饰符,则类的默认访问修饰符为internal 类的声明类的声明3.2.1 类的声明类的声明class Point /Point类的访问权限缺省为类的访问权限缺省为internal int x,y;类的声明类的声明Point p=new Point();类的实例化类的实例化3.2.2 类的成员类的成员类成员由两部分组成,一个是
6、类体中以类成员声明形式引类成员由两部分组成,一个是类体中以类成员声明形式引入的类成员,另一个是直接从它的基类继承而来的成员。入的类成员,另一个是直接从它的基类继承而来的成员。类成员声明主要包括:常数、字段、属性、方法声明等。类成员声明主要包括:常数、字段、属性、方法声明等。类成员声明默认访问修饰符为类成员声明默认访问修饰符为private。3.2.2 类的成员类的成员访问修饰符访问修饰符 const 类型类型 标识符标识符=常数表达式常数表达式常数声明不允许使用常数声明不允许使用static修饰符,但它和静态成员一样修饰符,但它和静态成员一样只能通过类访问只能通过类访问 常数声明常数声明访问修
7、饰符访问修饰符 类型类型 标识符标识符=常数表达式常数表达式加加static修饰的字段是静态字段,不加修饰的字段是静态字段,不加static修饰的字段是实例字段修饰的字段是实例字段静态字段不属于某个实例对象,属于整个类;静态字段不属于某个实例对象,属于整个类;实例字段属于实例对象,一个类可以创建若干实例对象;实例字段属于实例对象,一个类可以创建若干实例对象;在在static方法中可以可以调用其他方法中可以可以调用其他static成员,但是不能调用非成员,但是不能调用非static成员。在非成员。在非static方法中可以调用方法中可以调用static成员;成员;加加readonly修饰符的字段
8、是只读字段,对只读字段的赋值只能在声修饰符的字段是只读字段,对只读字段的赋值只能在声明的同时进行,或者通过类的实例构造函数或静态构造函数实现明的同时进行,或者通过类的实例构造函数或静态构造函数实现字段声明字段声明3.2.2 类的成员类的成员class Test public const int X=10;const double PI=3.14;/默认访问修饰符默认访问修饰符private private double a,b;/实例字段通过对象访问实例字段通过对象访问 public static double sum=0.0 /静态字段通过类访问静态字段通过类访问 public readon
9、ly int Radius;/只读字段只读字段 public Test()()Radius=1.0 /通过构造函数对通过构造函数对Radius赋值赋值 常数与字段声明常数与字段声明3.2.3 构造函数构造函数构造函数构造函数构造函数用来创建对象,并且可以在构造函数中对对象进行初始化。构造函数用来创建对象,并且可以在构造函数中对对象进行初始化。构造函数是用来创建对象的特殊函数,函数名和类名一样,没有返构造函数是用来创建对象的特殊函数,函数名和类名一样,没有返回值,连回值,连void都不用。都不用。构造函数可以有参数,构造函数可以有参数,new对象的时候传递函数参数即可对象的时候传递函数参数即可构
10、造函数可以重载,也就是有多个参数不同的构造函数。构造函数可以重载,也就是有多个参数不同的构造函数。如果不指定构造函数,则类有一个默认的无参构造函数。如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。参构造函数,则需要自己来写。3.2.3 构造函数构造函数访问修饰符访问修饰符 类名(参数列表)类名(参数列表)函数体函数体构造函数声明构造函数声明3.2.3 构造函数构造函数 class Student string id;string name;strin
11、g sex;int age;public Student()public Student(string sid,string sname,string ssex,int iage)id=sid;name=sname;sex=ssex;age=iage;构造函数构造函数3.2.3 构造函数构造函数 public class 派生类名称派生类名称:基类名称基类名称/类体类体定义派生类定义派生类无参构造函数无参构造函数public 派生类名派生类名()/函数体函数体 带参数构造函数带参数构造函数 public 派生类名派生类名(形参列表形参列表):base(基类构造函数实参列表基类构造函数实参列表)
12、/函数体函数体 派生类构造函数派生类构造函数3.2.3 构造函数构造函数派生类构造函数派生类构造函数默认执行基类的无参构造函数,如果要执行基类有参构默认执行基类的无参构造函数,如果要执行基类有参构造函数,则必须在派生类构造函数的基表列表中指出;造函数,则必须在派生类构造函数的基表列表中指出;如果基类具有带参数的构造函数,则派生类必需具有向如果基类具有带参数的构造函数,则派生类必需具有向基类传递参数的带参构造函数;基类传递参数的带参构造函数;构造函数调用顺序:构造函数调用顺序:先基类后派生类先基类后派生类。3.2.4 析构函数析构函数类名()类名()函数体函数体析构函数声明析构函数声明3.2.4
13、 析构函数析构函数析构函数析构函数创建一个对象时需要用构造函数初始化数据,与此相对创建一个对象时需要用构造函数初始化数据,与此相对应释放一个对象时就用析构函数。所以析构函数是用于应释放一个对象时就用析构函数。所以析构函数是用于实现析构类实例所需操作的方法。实现析构类实例所需操作的方法。析构函数不能写返回类型,也不能带参数,因此它不可析构函数不能写返回类型,也不能带参数,因此它不可能被重载,当然它也不能被继承,所以一个类最多只能能被重载,当然它也不能被继承,所以一个类最多只能有一个析构函数。有一个析构函数。一个类如果没有显式地声明析构函数,则编译器将自动一个类如果没有显式地声明析构函数,则编译器
14、将自动产生一个缺省默认的析构函数。产生一个缺省默认的析构函数。构造函数调用顺序:构造函数调用顺序:先派生类后基类先派生类后基类。3.3 方法方法3.3.1 方法的声明方法的声明3.3.2 方法的参数方法的参数3.3.3 静态方法与实例方法静态方法与实例方法3.3.4 方法的重载与覆盖方法的重载与覆盖3.3.1 方法的声明方法的声明 方法修饰符方法修饰符 返回类型返回类型 方法名方法名 (形参表形参表)方法体方法体 方法的声明方法的声明命名规范:单命名规范:单词首字母大写词首字母大写默认为默认为private3.3.2 方法的参数方法的参数值参数值参数引用参数引用参数ref输出参数输出参数out
15、参数数组参数数组params值参数值参数下面代码输出结果是什么?下面代码输出结果是什么?static void Main(string args)int num1=5,num2=10;/两个数字两个数字 Console.WriteLine(交换前两个数的值分别为交换前两个数的值分别为:0和和1,num1,num2);Swap(num1,num2);/交换两个数的值交换两个数的值 Console.WriteLine(交换后两个数的值分别为交换后两个数的值分别为:0和和1,num1,num2);/交换两个数的方法交换两个数的方法private static void Swap(int num1,i
16、nt num2)int temp;/中间变量中间变量 temp=num1;num1=num2;num2=temp;值传递不能保留参数的修改值传递不能保留参数的修改要要按引用传递按引用传递,使用,使用 ref引用参数引用参数refref 修饰参数:修饰参数:调用方法后,参数值的更改仍然保留调用方法后,参数值的更改仍然保留定义和调用定义和调用在参数前使用在参数前使用ref在调用方法前在调用方法前作为参数的变量声明并赋值作为参数的变量声明并赋值何时使用何时使用希望保留参数的更改希望保留参数的更改ref示例分析示例分析static void Main(string args)int num1=5,nu
17、m2=10;/两个数字两个数字 Console.WriteLine(交换前两个数的值分别为交换前两个数的值分别为:0和和1,num1,num2);/交换两个数的值交换两个数的值 Swap(ref num1,ref num2);Console.WriteLine(交换后两个数的值分别为交换后两个数的值分别为:0和和1,num1,num2);/交换两个数的方法交换两个数的方法private static void Swap(ref int num1,ref int num2)int temp;/中间变量中间变量 temp=num1;num1=num2;num2=temp;调用时也要使用调用时也要使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 面向对象编程基础 第三 面向 对象 编程 基础
限制150内