学习情景面向对象程序设计_第1页
学习情景面向对象程序设计_第2页
学习情景面向对象程序设计_第3页
学习情景面向对象程序设计_第4页
学习情景面向对象程序设计_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习情景面向对象程序设计第一页,共八十八页,编辑于2023年,星期二面向对象的软件开发技术是当今计算机技术发展的重要成果和趋势之一。C#是完全面向对象的程序设计语言。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点。本讲主要介绍面向对象程序设计中的基本概念和基于C#的面向对象程序设计的方法。2023/6/92C#程序设计实用教程第二页,共八十八页,编辑于2023年,星期二

7.1对象和类—对象对象是人们要进行研究的任何事物

颜色:灰色

排量:3.0刹车产地:德国行驶名字:保时捷行为状态

颜色:红色

排量:4.0刹车产地:意大利行驶名字:法拉利行为状态回顾现实生活中的对象,描述汽车的特征和行为有各自不同的状态第三页,共八十八页,编辑于2023年,星期二

7.1类和对象小汽车

颜色:灰色

排量:3.0

刹车产地:德国行驶名字:保时捷行为状态类的实例化,是由类具体化对象类排量颜色行驶刹车…归纳一组相似对象的共性对象属性方法类描述一组相似对象的共性产地名字第四页,共八十八页,编辑于2023年,星期二7.1类和对象---类属性型号价格里程行为起动停车行驶属性车轮数量档的数量行为加速换档刹车属性名称颜色品种行为摇尾巴吃东西犬吠第五页,共八十八页,编辑于2023年,星期二7.1类和对象类:相对对象而言,类似于蓝图包含方法和数据对象:是类的实例使用关键字new创建对象具有行为对象厨房起居室浴室书房饭厅储藏室门廊类第六页,共八十八页,编辑于2023年,星期二7.1类和对象数据成员成员方法对象:桑塔纳对象特征:黑色20002.4T上海大众动态特征:载人抽象实例化类:汽车属性:颜色型号马力生产厂家服务:运输数据值执行的操作类与对象的关系示例{第七页,共八十八页,编辑于2023年,星期二7.1类和对象类:是一种抽象的数据类型,它是所有具有一定共性的对象的抽象。本质上可以认为是对对象的描述,是创建对象的“模板”。类的某一个对象则被称为是类的一个实例,是类的实例化结果。对象类实例化抽象第八页,共八十八页,编辑于2023年,星期二课堂讨论先有对象还是先有类?-应该先定义类才可以从类的定义声明对象。第九页,共八十八页,编辑于2023年,星期二7.2面向对象语言的特点设计规范

面向对象封装继承多态第十页,共八十八页,编辑于2023年,星期二7.2面向对象语言的特点---封装封装,就是对数据的隐藏,封装实现了把数据和操作这些数据的代码(即离散的部件)包装成一个对象,而将数据和操作细节(方法)隐藏起来。私有数据方法方法数据对象A对象B公有数据产品封装模块化信息隐藏第十一页,共八十八页,编辑于2023年,星期二7.2面向对象语言的特点---继承继承:指面向对象程序的两个类之间的一种关系。

被继承的类叫父类、超类或基类(SuperClass、BaseClass)继承了父类所有属性和方法的类叫子类(SubClass).C#只支持单继承。继承实现了软件的重用。第十二页,共八十八页,编辑于2023年,星期二在面向对象技术中,山地自行车、赛车以及串座双人自行车都是自行车类的子类,这个父子关系可以如图所示:自行车(父类)双人自行车子类山地自行车赛车7.2面向对象语言的特点---继承第十三页,共八十八页,编辑于2023年,星期二7.2面向对象语言的特点---多态

多态是指一个程序中存在着同名的不同方法。在面向对象的程序中多态表现为,可以利用重载在同一类中定义多个同名的不同方法实现多态,也可以通过子类对父类方法的覆盖实现多态。将军对士兵们命令:出发!步兵步行,骑兵骑马…将军不必命令:步兵步行出发,骑兵骑马出发…第十四页,共八十八页,编辑于2023年,星期二7.3类的定义格式为:

[类修饰符]

class

类名[:基类类名]{

类体

}关键字合法的标识符属性(变量)方法第十五页,共八十八页,编辑于2023年,星期二例7-1:定义一个车辆类(有两个变量,一个方法)classVehicle{

intPassengers;//乘客数intGas;//所耗燃料

voidRun()//模拟汽车运行{if(Gas>0)Gas-=10;elseConsole.Write(“没有油了,不能再跑了”);}}成员变量(字段)成员方法第十六页,共八十八页,编辑于2023年,星期二7.3类的定义在哪儿书写类的代码?与你的源代码文件在一块,同一个命名空间(namespace)下。C#允许在一个类中嵌套另一个类的定义。[建议]将类书写在另外一个.cs文件中。第十七页,共八十八页,编辑于2023年,星期二C#中类的定义方法类定义的示例7-3:class人{//声明字段

public

string

姓名;

public

string

性别;

public

string年龄;

//声明方法

public

void

吃饭(string食物){Console.Write(姓名+“正在吃:”+食物);}

}第十八页,共八十八页,编辑于2023年,星期二例如7_2:publicclassCuboid//类名为Cuboid{//声明字段(定义成员变量)

privatedoublelength;

privatedoublewidth;

privatedoublehigh;publicdoubleCubage(){returnlength*width*high}}7.3类的定义声明字段访问控制符类的方法第十九页,共八十八页,编辑于2023年,星期二1.声明字段(成员变量)

与普通变量的声明格式相同。在类体中,字段声明的位置没有特殊要求,习惯上将字段声明在类体中的最前面,以便于阅读。7.3类的定义第二十页,共八十八页,编辑于2023年,星期二课本实例5-2class

Student{

//字段声明

public

stringstrName;

private

intnAge;

//方法

voidpri(){

Console.Write("姓名为:{0},年龄为{1}",strName,nAge);}}第二十一页,共八十八页,编辑于2023年,星期二7.4创建类的对象在C#中,我们使用new运算符来创建类的对象。定义Vehicle类的对象

Vehiclevc=newVehicle();定义Cuboid类的对象

Cuboidcu=newCuboid();类名对象名=new

类名();实例化对象实例化对象第二十二页,共八十八页,编辑于2023年,星期二引用对象成员变量的语法形式为:

对象名.成员变量名(成员方法);例如:cu.length=2;cu.width=3;cu.high=5;cu.Cubage();访问对象成员第二十三页,共八十八页,编辑于2023年,星期二classVehicle{

intPassengers;//乘客数

intGas;//所耗燃料

}

voidRun()//模拟汽车运行

{if(Gas>0)Gas-=10;elseConsole.Write(“没有油了,不能再跑了”);}}Vehiclevc=newVehicle();vc.Passengers=4;vc.Gas=100;vc.Run();为7-1创建对象第二十四页,共八十八页,编辑于2023年,星期二为7-2创建对象例如7_2:publicclassCuboid//类名为Cuboid{//声明字段(定义成员变量)doublelength;

publicdoublewidth;

privatedoublehigh;publicdoubleCubage(){returnlength*width*high}}Cuboidcu=newCuboidcu.length=2;cu.width=3;cu.high=5;cu.Cubage();第二十五页,共八十八页,编辑于2023年,星期二课本实例5-2,创建对象class

Student{

//字段

public

stringstrName;

public

intnAge;public

voidPintInfo(){

Console.Write("姓名为:{0}的学生年龄为:{1}",strName,nAge);}}class

test{

static

voidMain(string[]args){

Studentstu=new

Student();stu.strName="张三";stu.nAge=19;stu.PintInfo();}}第二十六页,共八十八页,编辑于2023年,星期二创建7-3对象类和对象的例子:人姓名性别年龄吃饭()王秃子:人王秃子男20吃饭()人王秃子=new

人();王秃子.姓名=“王秃子“;王秃子.性别=“男”;王秃子.年龄=20;王秃子.吃饭(“红烧肉”);第二十七页,共八十八页,编辑于2023年,星期二公有成员和私有成员classstudent{

publicstringname;//姓名

privateintage;//年龄

privatestringidNumber

;//身份证号}…staticvoidMain(string[]args){studentmyStudent=newstudent();

myS="张三";

myStudent.age=20;

}私有成员公有成员实例化一个对象可以访问无法访问编译错误

第二十八页,共八十八页,编辑于2023年,星期二表7.1类访问修饰符访问修饰符意

义public(公有)类可以在其他名字空间访问internal(内部)类只能为所在名字空间访问(默认此)(如果引用类库,则不能访问)表7.2成员访问修饰符访问修饰符意

义public(公有)访问不受限制protected(受保护)访问限于所在类和所在类的派生类internal(内部)访问限于所在名字空间内(如果引用类库,则不能访问)private(私有)访问限于所在类。7.3类的定义第二十九页,共八十八页,编辑于2023年,星期二公有成员和私有成员public(公有级别)定义为公有访问级别的类的成员能够被外界的任何对象访问,没有任何限制。class

Person {

publicstringName;//....}class

Program {

publicstaticvoidMain(string[]args) {

Personmyself=new

Person();myself.Name=“Jiawei”;}}第三十页,共八十八页,编辑于2023年,星期二private(私有级别)定义为私有访问级别的类的成员只能被类的成员所访问,而不能被其它对象访问。class

Person {

privatestringName;//....}class

Program {

publicstaticvoidMain(string[]args) {

Personmyself=new

Person();//!myself.Name=“Jiawei”;}}公有成员和私有成员第三十一页,共八十八页,编辑于2023年,星期二private(私有级别)正确使用方法class

Person {

privatestring_name;

publicvoidSetName(stringname) {_name=name;}}class

Program {

publicstaticvoidMain(string[]args) {

Personmyself=new

Person();myself.SetName(“Jiawei”);}}公有成员和私有成员第三十二页,共八十八页,编辑于2023年,星期二课本实例5-3///<summary>

///学生类

///</summary>

class

Student{

//字段

public

stringstrName;

private

intnAge;

//方法

public

voidSetAge(int_nAge){

this.nAge=_nAge;}

public

intGetAge(){

return

this.nAge;}}class

UseStudent{

static

voidMain(string[]args){

Students=new

Student();s.SetAge(10);

Console.WriteLine(s.GetAge());}}第三十三页,共八十八页,编辑于2023年,星期二7.4

类和类的成员—属性classStudent{privatestaticstringstrName;privatestaticintnAge;

public

voidSetAge(int_nAge)

{

this.nAge=_nAge;

}

public

intGetAge()

{

return

this.nAge;

}}方法SetAge(Value)和GetAge()分别读取和写入学生Age…Students;s.SetAge(20);intStuAge=s.GetAge()…每次都调用GetId()和SetId()方法会很繁琐属性第三十四页,共八十八页,编辑于2023年,星期二7.4类和类的成员—属性classStudent{

public

stringstrName;

private

intnAge;publicstringAge{ get { returnnAge; } set { nAge=value; } }}读取ID时调用将值赋给ID时调用

第三十五页,共八十八页,编辑于2023年,星期二7.4类和类的成员—属性

[访问修饰符]数据类型属性名

{

get{

};

set{

};

}读/写属性可以赋值和检索值第三十六页,共八十八页,编辑于2023年,星期二7.4

类和类的成员—属性[访问修饰符]数据类型属性名{

get{

};}只读属性只能检索值第三十七页,共八十八页,编辑于2023年,星期二7.4类和类的成员—属性[访问修饰符]数据类型属性名{set{

};}只写属性只能赋值第三十八页,共八十八页,编辑于2023年,星期二7.4

类和类的成员—属性属性是“聪明”的字段,“特殊”的方法定义属性类似于定义一个方法,但使用属性时如同使用一个字段classCat{privatestringname;privateintage;}staticvoidMain(){Catcat1=newCat();cat1.age=-13;//错误}第三十九页,共八十八页,编辑于2023年,星期二属性的语法格式为:

[访问修饰符]<类型名>属性名{

get

//读访问器

{//执行体

return<私有字段>;

//执行体可任写,但须有return<字段>语句。

}set

//写访问器

{//执行体

<私有字段>=value;

//执行体可任写,但须有value值给某字段语句。

}}7.4

类和类的成员—属性第四十页,共八十八页,编辑于2023年,星期二7.4

类和类的成员—属性示例:publicclassCat{privateintage;publicintAge{

get{

returnage;}set

{if(value<=0||value>=20)……报告出错elseage=value;}}第四十一页,共八十八页,编辑于2023年,星期二7.4

类和类的成员—属性示例con6_2:Catcat1=newCat();cat1.Age=1;//使用Age属性的set访问器intn=Cat.Age;//使用Age属性的get访问器cat1.Age=100;//收到错误消息第四十二页,共八十八页,编辑于2023年,星期二例如7_2(添加属性定义):publicclassCuboid//类名为Cuboid{//声明字段(定义成员变量)

privatedoublelength;

privatedoublewidth;

privatedoublehigh;//声明属性

publicdoubleLength{get{returnlength;}set{length=value;}}

publicdoubleWidth{get{returnwidth;}set{width=value;}}

publicdoubleHigh{get{returnhigh;}set{high=value;}}//声明方法

publicdoubleCubage(){returnlength*width*high}}7.4

类和类的成员—属性数据读取属性名:与字段相关但不同对数据值设置关键字,要写入字段的值第四十三页,共八十八页,编辑于2023年,星期二

7.4类和类的成员—属性publicclassStudent{intage=26;

//姓名

privatestringname;

publicstringName

{get{returnname;}set{name=value;}

}

//问候

publicvoidSayHi(){ …}}类的成员字段属性方法…

类名第四十四页,共八十八页,编辑于2023年,星期二7.4

类和类的成员—属性如果只提供了get{},没有set{},这样的属性为只读属性如果只提供了set{},没有get{},只写属性优点:属性在使用时类似于类的字段,简单属性在实现时类似于方法,可以编写代码控制用户对数据的存、取,增加安全性检查可以设置只读或只写属性第四十五页,共八十八页,编辑于2023年,星期二

7.4

类和类的成员—属性privateintage;//年龄publicintAge{get{returnage;}set

{

if(value>0&&value<100){

age=value;}else{

age=18;}}}myStudent.Age=-20;…//打印myStudent.Age=40;…//打印没有访问age公开Age录入非法数据打印私有变量age不公开age通过公有Age访问和约束私有字段age第四十六页,共八十八页,编辑于2023年,星期二什么是属性C#不直接访问类的数据通过访问器访问(get,set)classStudent{

//姓名

privatestringname;

publicstringName

{get{returnname;}set{name=value;}

}

}返回nameget用于获取相应字段的值set用于设置字段的值只有get时:只读属性只有set时:只写属性get和set都存在:读写属性属性的类型和字段类型必须一致。给name赋值第四十七页,共八十八页,编辑于2023年,星期二属性的特点privateintage;//年龄publicintAge{get{returnage;}set

{

if(value>0&&value<100){

age=value;}else{

age=18;}}}控制私有字段的可访问性保护内部数据的安全建议类内部敏感字段使用属性来控制访问类型可以是各种数据类型,如:对象、数组等等第四十八页,共八十八页,编辑于2023年,星期二小结编写考试管理系统中的Student类包含的属性年龄(0-100)不符合的设为18姓名(只读属性)爱好(读写)给属性赋值并打印出来第四十九页,共八十八页,编辑于2023年,星期二7.5类的方法----方法的定义语法访问修饰符(可选),默认情况下为

private[访问修饰符]返回类型<方法名>([参数列表]){//方法主体}如果不需要返回任何值,方法可能返回void

数据类型方法是类或对象的行为对象需要做某些事情,在类中添加方法方法的定义合法的标识符不能加“;”用逗号隔开变量定义通过return返回值如果返回类型是void,方法是否需要返回值?第五十页,共八十八页,编辑于2023年,星期二【例5-9】方法的定义。

classMotorcycle{publicvoidStartEngine(){}publicvoidAddGas(intgallons){}publicintDrive(intmiles,intspeed){return0;}}2023/6/951C#程序设计实用教程第五十一页,共八十八页,编辑于2023年,星期二7.5类的方法2.调用方法

从方法被调用的位置,可以分为在方法声明的类内部调用该方法和在类外部调用方法。内部调用语法格式为:

方法名(参数列表)

在方法声明的类定义外部调用该方法实际上是通过类声明的对象调用该方法,其格式为:

对象名.方法名(参数列表)

第五十二页,共八十八页,编辑于2023年,星期二实例6_1:通过调用体积方法来实现计算长方体对象的体积第五十三页,共八十八页,编辑于2023年,星期二7.5类的方法----方法的调用【例5-10】方法的调用。Motorcyclemoto=newMotorcycle();moto.StartEngine();moto.AddGas(15);moto.Drive(5,20);第五十四页,共八十八页,编辑于2023年,星期二7.5类的方法----从方法返回一般来说有两种情况将导致方法返回。(1)当遇到方法的结束花括号。(2)执行到return语句。有两种形式的return语句:一种用在void方法中(即无需有返回值的方法),另一种用在有返回值的方法中。第五十五页,共八十八页,编辑于2023年,星期二【例5-11】通过方法的结束花括号返回。

classMyClass{publicvoidmyMethod(){inti;for(i=0;i<10;i++){if(i%3==0)continue;Console.WriteLine("{0}\t",i);}}staticvoidMain(){MyClassmycls=newMyClass();mycls.myMethod();}}2023/6/956C#程序设计实用教程第五十六页,共八十八页,编辑于2023年,星期二

【例5-12】通过方法的return语句返回。

classMyClass{publicvoidmyMethod(){inti=8;if(i>=5){i=i*2;Console.WriteLine(i);return;}else{i=i*3;Console.WriteLine(i);return;}}

2023/6/957C#程序设计实用教程staticvoidMain(){MyClassmycls=newMyClass();mycls.myMethod();}}第五十七页,共八十八页,编辑于2023年,星期二使用下述形式的return语句从方法返回一个值给调用者:格式:returnvalue;【例5-13】通过方法的return语句返回值。classMyClass{publicintmyMethod(){inti=8;if(i>=5){i=i*2;returni;}else{i=i*3;returni;}}staticvoidMain(){MyClassmycls=newMyClass();Console.WriteLine(mycls.myMethod());}}}2023/6/958C#程序设计实用教程第五十八页,共八十八页,编辑于2023年,星期二

7.5类的方法----方法的参数在方法的声明与调用中,经常涉及方法参数,在方法声明中使用的参数叫形式参数(形参),在调用方法中使用的参数叫实际参数(实参)。在调用方法时,参数传递就是将实参传递给形参的过程。2023/6/959C#程序设计实用教程第五十九页,共八十八页,编辑于2023年,星期二7.5类的方法----方法的参数

1.值参数简单数据类型的参数为值参数,它表明实参与形参之间按值传递。当这个方法被调用时,编译器为值参数分配存储单元,然后将对应的实参的值拷贝到形参中。这种传递方式的好处是在方法中对形参的修改不会影响外部的实参。2023/6/960C#程序设计实用教程第六十页,共八十八页,编辑于2023年,星期二

5.4.2方法的参数

【例5-14】使用值参数。usingSystem;

namespaceValueParameters{classMyClass{publicvoidSwap(intx,inty){intk;k=x;x=y;y=k;}}

2023/6/961C#程序设计实用教程classTest{staticvoidMain(){inta=8,b=10;Console.WriteLine("a={0},b={1}",a,b);MyClassmycls=newMyClass();mycls.Swap(a,b);Console.WriteLine("a={0},b={1}",a,b);}}}程序的运行结果为:a=8,b=10a=8,b=10第六十一页,共八十八页,编辑于2023年,星期二

7.5类的方法----方法的参数

2.引用参数用ref修饰符声明的简单数据类型参数为引用参数。引用数据类型作为参数引用参数并不创建新存储单元,它与实参变量同处一个存储单元。因此,对形参的修改就是对实参变量的修改。基本类型参数按引用传递时,实参与形参前均须使用关键字ref。2023/6/962C#程序设计实用教程第六十二页,共八十八页,编辑于2023年,星期二

7.5类的方法----方法的参数【例5-15】使用引用参数。usingSystem;

namespaceReferenceParameters{classMyClass{publicvoidSwap(refintx,refinty){intk;k=x;x=y;y=k;}}2023/6/963C#程序设计实用教程第六十三页,共八十八页,编辑于2023年,星期二classTest{staticvoidMain(){inta=8,b=10;Console.WriteLine("a={0},b={1}",a,b);MyClassmycls=newMyClass();mycls.Swap(refa,refb);Console.WriteLine("a={0},b={1}",a,b);}}}程序的运行结果为:a=8,b=10a=10,b=82023/6/964C#程序设计实用教程第六十四页,共八十八页,编辑于2023年,星期二7-6构造函数构造函数是类的一种特殊方法,每次创建类的实例都会调用它。[访问修饰符]<类名>(){//构造函数的主体}语法:…//默认构造函数Student(){ _class=“信管"; }…示例:第六十五页,共八十八页,编辑于2023年,星期二有以下几点特殊性:构造方法在创建对象时被自动调用。构造方法的方法名与类名相同。没有返回类型和返回值。构造方法可以重载。通常用public修饰7-6构造函数第六十六页,共八十八页,编辑于2023年,星期二

6.3.1声明构造方法声明构造方法有两个特别要求:

一是构造方法不允许有返回类型包括void类型二是构造方法的名称必须与类名相同。7-6构造函数第六十七页,共八十八页,编辑于2023年,星期二演示:示例17-6构造函数classStudent{privatestring_name;privatechar_gender;privatestring_class;privateuint_grade;//默认构造函数privateStudent()

{_class=“信管";

}staticvoidMain(string[]args)

{ //调用默认构造函数Studentobj=newStudent();Console.WriteLine(“班级="+obj._class);Console.WriteLine(“成绩="+obj._grade);

}}第六十八页,共八十八页,编辑于2023年,星期二长方体类构造方法声明如下:publicclassCuboid//类名为Cuboid{//声明字段(定义成员变量)

privatedoublelength;

privatedoublewidth;

privatedoublehigh;//声明构造方法

publicCuboid(doublel,doublew,doubleh){length=l;width=w;high=h;}//声明属性

publicdoubleLength{get{returnlength;}set{length=value;}}

publicdoubleWidth{get{returnwidth;}set{width=value;}}

publicdoubleHigh{get{returnhigh;}set{high=value;}}//声明方法

publicdoubleCubage(){returnlength*width*high}}第六十九页,共八十八页,编辑于2023年,星期二7-6构造函数创建对象:Cuboidcubiod=newCuboid(l,w,h);第七十页,共八十八页,编辑于2023年,星期二

7-6构造函数【例5-5】通过构造函数,实现在产生一个学生对象时为其完成起名工作。usingSystem;

namespaceExample_Construct{///<summary>///学生类///</summary>publicclassStudent{publicstringstrName; //域

2023/6/971C#程序设计实用教程第七十一页,共八十八页,编辑于2023年,星期二

7-6构造函数

///<summary>///构造函数,为学生起名///</summary>publicStudent(string_strName){this.strName=_strName;}

}classClass1{

staticvoidMain(string[]args){Students=newStudent("张三");Console.WriteLine(s.strName);}}}2023/6/972C#程序设计实用教程第七十二页,共八十八页,编辑于2023年,星期二

例:usingSystem;classMyClass{publicintx;publicMyclass()//类MyClass的构造函数{x=10;}}classConsDemo{publicstaticvoidMain(){MyClasst1=newMyClass();MyClasst2=newMyClass();Console.WriteLine(“{0}\t{1}”,t1.x,t2.x);}}运行结果如下:第七十三页,共八十八页,编辑于2023年,星期二7-6构造函数----参数化构造函数[访问修饰符]<类名>{//构造函数的主体}语法:([参数列表])…//参数化构造函数Student(stringstrclass){_class=strclass; }…示例:第七十四页,共八十八页,编辑于2023年,星期二构造函数也可以带参数。

例:usingSystem;classFruit{publicstringcolor;publicstringshape;publicFruit(stringc,strings)//类Fruit的构造函数{color=c;shape=s;}}classTest{publicstaticvoidMain(){FruitOrange=newFruit(“orange”,”round”);//创建Orange实例Console.WriteLine(“{0},{1}”,Orange.color,Orange.shape);}}运行结果如下:第七十五页,共八十八页,编辑于2023年,星期二7-6构造函数----参数化构造函数//默认构造函数privateStudent(){_class=“信管";}//参数化构造函数privateEmployee(stringstrclass,stringstrName,chargender,uintgrade){_class=strclass;_name=strName;_gender=gender;_grade=grade;}publicstaticvoidMain(string[]args){//调用默认构造函数Studentobj=newStudent();//调用参数化构造函数Studentobj1=newStudent(“信管08“,”张亮亮“,‘男',98);Console.WriteLine(“默认构造函数输出:\n班级=“+obj._class);Console.WriteLine(“\n参数化构造函数输出:\n班级="+obj1._class);}第七十六页,共八十八页,编辑于2023年,星期二析构函数是用于执行清除操作的特殊方法~<类名>()0{//析构函数的主体}语法:…~Student(){

}…示例:第七十七页,共八十八页,编辑于2023年,星期二7.7方法重载6.4.1成员方法重载方法可以重载,即两个或两个以上方法有相同的名称。重载后的方法被调用时,可根据方法的参数个数、类型来区分应该调用哪个方法。例如能同时处理整型与浮点型数据的重载方法:publicvoidSwap(refinta,refintb){}publicvoidSwap(reffloata,reffloatb){}第七十八页,共八十八页,编辑于2023年,星期二为什么要重载publicintSum(intpara1,intpara2){returnpara1+para2;}整形参数,返回值整型如果想让两个string型、两个double型相加,怎么做?编写两个不同名字的方法,这样我们在进行调用时要先判断是什么类型,能否不判断直接就能相加呢?第七十九页,共八十八页,编辑于2023年,星期二方法的重载同一个类中添加几个名字相同,参数与返回值不同的方法publicstring

Sum(string

para1,string

para2){returnpara1+para2;}publicdoubleSum(doublepara1,doublepara2){returnpara1+para2;}调用时只要传递参数即可,无需判断类型第八十页,共八十八页,编辑于2023年,星期二重载的方式classAdd{

publicstring

Sum(string

para1,string

para2){…}

publicintSum(intpara1,intpara2){…}}基于不同类型参数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论