《面向对象程序语言设计5用对象思考:属性和方法.ppt》由会员分享,可在线阅读,更多相关《面向对象程序语言设计5用对象思考:属性和方法.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章第二章第二章第二章用对象思考:属性和方法用对象思考:属性和方法理解类与对象的概念理解类与对象的概念理解属性和方法的概念理解属性和方法的概念能够定义一个简单的类能够定义一个简单的类本章目标本章目标对象对象对象是人们要进行研究的任何事物对象是人们要进行研究的任何事物 颜色:灰色颜色:灰色排量:排量:3.0 3.0 刹车刹车产地:德国产地:德国行驶行驶名字:保时捷名字:保时捷行为行为状态状态颜色:红色颜色:红色排量:排量:4.04.0刹车刹车产地:意大利产地:意大利行驶行驶名字:法拉利名字:法拉利行为行为状态状态描述汽车的特征和行为描述汽车的特征和行为 有各自不同有各自不同的状态的状态类和对象
2、类和对象小汽车小汽车颜色:灰色颜色:灰色排量:排量:3.0 刹车刹车产地:德国产地:德国行驶行驶名字:保时捷名字:保时捷行为行为状态状态类的实例化,是类的实例化,是由类具体化对象由类具体化对象类类产地产地 车体颜色车体颜色 行驶行驶 刹车刹车 归纳一组相似对归纳一组相似对象的共性象的共性对象对象属性属性方法方法类描述一组相似对象的共性类描述一组相似对象的共性类和对象的应用类和对象的应用类和对象的简单应用类和对象的简单应用/Car ferrari =New Car();ferrari.Run();/类类对象对象实例化对象实例化对象 调用方法调用方法 public class Student in
3、t age=26;/姓名姓名 private string name;public string Name get return name;set name=value;/问候问候 public void SayHi()类和类的成员类和类的成员类的成员类的成员字段字段 属性属性 方法方法 类名类名 自定义一个类自定义一个类自定义类自定义类DBHelperclass DBHelper /数据库连接字符串数据库连接字符串 private static string connString=;/数据库连接数据库连接 Connection 对象对象 public static SqlConnection
4、 connection=new SqlConnection(connString);访问修饰符访问修饰符私有私有 公有公有 公有成员和私有成员公有成员和私有成员class student private string name;/姓名姓名 public int age;/年龄年龄 public string idNumber;/身份证号身份证号static void Main(string args)student myStudent=new student();myStudent.name=张三张三;myStudent.age=20;私有成员私有成员 公有成员公有成员 实例化一个对象实例化一
5、个对象 可以访问可以访问 演示示例演示示例1 1:访问修饰符访问修饰符 无法访问编译错误无法访问编译错误 数据安全数据安全static void Main(string args)student myStudent=new student();myStudent.age=-2;myStudent.idNumber=123456;非法数据非法数据 身份证号不能被修改身份证号不能被修改 无法获得数据无法获得数据 无法正常赋值无法正常赋值 有时候将类中有时候将类中的字段公开是的字段公开是不安全的不安全的如果设为私有成员如果设为私有成员能否对这些字段进行规则约束或者只读呢?能否对这些字段进行规则约束或
6、者只读呢?在类中使用属性在类中使用属性private int age;/年龄年龄public int Age get return age;set if(value 0&value 0&value 50&score 60)Console.WriteLine(你的成绩在你的成绩在50-60之间,可以加分。之间,可以加分。);score=60;scoreResult=60;都可以输出结果都可以输出结果 ref侧重修改,侧重修改,out侧重输出侧重输出 不能写成不能写成AddScore(out int scoreResult)方法的使用方法的使用实现两个整型的加法实现两个整型的加法class Add
7、 public int Sum(int para1,int para2)return para1+para2;Add myAdd=new Add();int sum=myAdd.Sum(2,3);使用方法使用方法实例化一个对象实例化一个对象 返回结果返回结果 演示示例演示示例3:方法的使用方法的使用 调用方法调用方法 静态方法静态方法class mySwap public static void Swap(ref int num1,ref int num2)int temp;temp=num1;num1=num2;num2=temp;class Program static void Main
8、(string args)int num1=5,num2=10;mySwap.Swap(ref num1,ref num2);回顾一下,回顾一下,Swap方法在另一类中如何调用?方法在另一类中如何调用?静态方法使用类名调用静态方法使用类名调用静态方法静态方法 静态方法和实例方法静态方法和实例方法使用使用static修饰的方法称为静态方法修饰的方法称为静态方法使用实例对象调用的方法叫做实例方法使用实例对象调用的方法叫做实例方法静态方法静态方法实例方法实例方法static 关键字关键字不需要不需要static关键字关键字使用类名调用使用类名调用使用实例对象调用使用实例对象调用可以访问静态成员可以访
9、问静态成员可以直接访问静态成员可以直接访问静态成员不可以直接访问实例成员不可以直接访问实例成员可以直接访问实例成员可以直接访问实例成员不能直接调用实例方法不能直接调用实例方法可以直接访问实例方法、静态方法可以直接访问实例方法、静态方法调用前初始化调用前初始化实例化对象时初始化实例化对象时初始化为什么要重载为什么要重载 public int Sum(int para1,int para2)return para1+para2;整形参数,整形参数,返回值整型返回值整型如果想让两个如果想让两个string型、两个型、两个double型相加,怎么做?型相加,怎么做?编写两个不同名字的方法,这样我们在进
10、行调用时编写两个不同名字的方法,这样我们在进行调用时要先判断是什么类型,能否不判断直接就能相加呢?要先判断是什么类型,能否不判断直接就能相加呢?方法的重载方法的重载同一个类中添加几个名字相同,参数与返回值不同的方法同一个类中添加几个名字相同,参数与返回值不同的方法 public string Sum(string para1,string para2)return para1+para2;public double Sum(double para1,double para2)return para1+para2;调用时只要传递参数即可,无需判断类型调用时只要传递参数即可,无需判断类型 演示示例
11、演示示例4:方法的重载方法的重载 class Add public string Sum(string para1,string para2)public int Sum(int para1,int para2)重载的方式重载的方式基于不同类型参数的重载基于不同类型参数的重载 class Add public int Sum(int para1,int para2)public int Sum(int para1,int para2,int para3)相同类型不同参数个数的重载相同类型不同参数个数的重载 不允许重载方法仅仅是返回值不同不允许重载方法仅仅是返回值不同 演示示例演示示例5:构造函
12、数构造函数 Student zhang=new Student();zhang.Name=张靓靓张靓靓;zhang.Age=20;zhang.Hobby=唱歌歌唱歌歌;一种特别的方法一种特别的方法班级来了新学员班级来了新学员添加学员对象添加学员对象学员类实例化对象、学员类实例化对象、设置属性设置属性初始属性若太多,初始属性若太多,设置麻烦设置麻烦能否在实例化时设置能否在实例化时设置属性?属性?public Student(string name,int age,string hobby)this.Name=name;this.Age=age;this.Hobby=hobby;Student z
13、hang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);一次设置完成一次设置完成类中加入这类中加入这个方法个方法添加的方法叫做添加的方法叫做构造函数构造函数构造函数构造函数是类中的一种特殊的方法是类中的一种特殊的方法构造函数名与类名相同,不返回任何值构造函数名与类名相同,不返回任何值可初始化成员变量可初始化成员变量class Student public Student(string name,int age,string hobby)this.Name=name;this.Age=age;this.Hobby=hobby;初始化成员变量初始化成员变量 this 关键字引用类的当
14、前实例关键字引用类的当前实例 将参数的值,分别赋将参数的值,分别赋给当前实例的属性给当前实例的属性使用构造函数使用构造函数new 关键字关键字可以实例化一个新的对象可以实例化一个新的对象指定对某个带参数的构造函数指定对某个带参数的构造函数 Student zhang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);每次创建类的实例都会调用此方法每次创建类的实例都会调用此方法实例化对象调用实例化对象调用构造函数构造函数 使用使用 new 关键字关键字 Student scofield=new Student();Student zhang=new Student(张靓靓张靓靓,20,
15、唱歌歌唱歌歌);实例化一个对象实例化一个对象 实例化一个新对象实例化一个新对象 public Student()public Student(string name,int age,string hobby)this.name=name;this.age=age;this.hobby=hobby;构造函数的重载构造函数的重载构造函数也可以重载构造函数也可以重载Student scofield=new Student();Student zhang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);方法名相同,方法名相同,参数不同参数不同综合实战综合实战构造函数的重载,可以使类实例化对
16、象更灵活构造函数的重载,可以使类实例化对象更灵活演示示例演示示例6:重载重载(RssRead类的搭建类的搭建)点击次数点击次数 Clicks描述描述 Descriptionurl 地址地址 Url构造函数构造函数显示名称显示名称 DisplayName方法方法属性属性都是读写属性都是读写属性 private int a;public int Aget return a;set a=value;你喜欢读哪段代码?你喜欢读哪段代码?合格的程序要符合编码规则合格的程序要符合编码规则直观易于理解、有意义的单词直观易于理解、有意义的单词 方便维护方便维护有利于调试有利于调试编码规则的必要性编码规则的必要
17、性如如name,age,student private int name;public int Name get return name;set name=value;无法理解无法理解是什么是什么 Pascal命名法命名法变量采用有意义的单词变量采用有意义的单词单词的一个字母大写单词的一个字母大写StudentName、MaxAgeCamel命名法命名法变量采用有意义的单词变量采用有意义的单词第一个单词的首字母小写第一个单词的首字母小写其余单词的首字母大写其余单词的首字母大写 name,classNamePascal 和和 Camel 命名法命名法public class Student private string firstName;public string FirstName get return firstName;总结总结简述属性和字段的区别?简述属性和字段的区别?只读属性中只有哪个访问器?只读属性中只有哪个访问器?简述方法的重载时需要注意的问题?简述方法的重载时需要注意的问题?new关键字有什么作用?关键字有什么作用?this关键字的作用是什么?关键字的作用是什么?