收藏 分享(赏)

面向对象程序语言设计5用对象思考:属性和方法.ppt

上传人:kpmy5893 文档编号:8146721 上传时间:2019-06-11 格式:PPT 页数:30 大小:2.05MB
下载 相关 举报
面向对象程序语言设计5用对象思考:属性和方法.ppt_第1页
第1页 / 共30页
面向对象程序语言设计5用对象思考:属性和方法.ppt_第2页
第2页 / 共30页
面向对象程序语言设计5用对象思考:属性和方法.ppt_第3页
第3页 / 共30页
面向对象程序语言设计5用对象思考:属性和方法.ppt_第4页
第4页 / 共30页
面向对象程序语言设计5用对象思考:属性和方法.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第二章,用对象思考:属性和方法,理解类与对象的概念 理解属性和方法的概念 能够定义一个简单的类,本章目标,对象,对象是人们要进行研究的任何事物,描述汽车的特征和行为,有各自不同的状态,类和对象,小汽车,类的实例化,是由类具体化对象,类,产地,车体颜色,行驶,刹车,归纳一组相似对象的共性,对象,属性,方法,类描述一组相似对象的共性,类和对象的应用,类和对象的简单应用,/ Car ferrari = New Car();ferrari.Run(); /,类,对象,实例化对象,调用方法,public class Student int age = 26;/ 姓名private string name

2、;public string Nameget return name; set name = value; /问候public void SayHi() ,类和类的成员,类的成员,字段,属性,方法,类名,自定义一个类,自定义类DBHelper,class DBHelper / 数据库连接字符串private static string connString = “ “;/ 数据库连接 Connection 对象public static SqlConnection connection = new SqlConnection(connString); ,访问修饰符,私有,公有,公有成员和私有成

3、员,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; ,私有成员,公有成员,实例化一个对象,可以访问,演示示例1:访问修饰符,无法访问编译错误,数据安全,static void Main(string args) student myStudent = new s

4、tudent();myStudent.age = -2;myStudent.idNumber = “123456“; ,非法数据,身份证号不能被修改,无法获得数据,无法正常赋值,有时候将类中的字段公开是不安全的,如果设为私有成员,能否对这些字段进行规则约束或者只读呢?,在类中使用属性,private int age; /年龄 public int Age get return age; setif (value 0 ,myStudent.Age = -20; /打印 myStudent.Age = 40; /打印,没有访问age,公开Age,录入非法数据,打印私有变量age,演示示例2: My

5、Attribute,不公开age,通过公有Age访问和约束私有字段age,什么是属性,C#不直接访问类的数据 通过访问器访问(get,set),class Student / 姓名private string name;public string Nameget return name; set name = value; ,返回name,get用于获取相应字段的值,set用于设置字段的值,只有get时:只读属性,只有set时:只写属性,get和set都存在:读写属性,属性的类型和字段类型必须一致。,给name赋值,属性的特点,private int age; /年龄 public int A

6、ge get return age; setif (value 0 ,控制私有字段的可访问性,保护内部数据的安全,建议类内部敏感字段使用 属性来控制访问,类型可以是各种数据类型,如:对象、数组等等,封装字段,将类中的字段、属性绑到一起,封装字段,封装是面向对象的三大特性之一,避免非法数据的访问,保证数据的完整性,演示: 在VS中使用重构封装字段,小结,编写MySchool中的Student类 包含的属性 年龄(0-100)不符合的设为18 姓名(只读属性) 爱好(读写) 给属性赋值并打印出来,在类中使用方法,方法是类或对象的行为 对象需要做某些事情,在类中添加方法 回顾方法的定义,访问修饰符

7、返回类型 方法名 ( 参数列表 ) / 方法的主体 ,通过return返回值,如果返回类型是void,方法是否需要返回值?,第一学期我们学习了几种参数传递方式?,方法的参数,回顾:参数传递 使用值传递,参数值的更改不能保留。 使用 ref 可以将参数值的更改保留 out 类型参数,private static void AddScore(ref int score,out int scoreResult) if (score 50 ,都可以输出结果,ref侧重修改,out侧重输出,不能写成AddScore(out int scoreResult),方法的使用,实现两个整型的加法,class A

8、dd 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(string a

9、rgs)int num1 = 5, num2 = 10; mySwap.Swap(ref num1, ref num2); ,回顾一下,Swap方法在另一类中如何调用?,静态方法使用类名调用,静态方法,静态方法和实例方法,使用static修饰的方法称为静态方法 使用实例对象调用的方法叫做实例方法,为什么要重载,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;,调用时只要传递参数即可,无需判断类型,演示示例4:方法的重载,class Add public string Sum(string para1, string para2)public int Sum(int para1, int para2) ,重载的方式,基

11、于不同类型参数的重载,class Add public int Sum(int para1, int para2)public int Sum(int para1, int para2,int para3) ,相同类型不同参数个数的重载,不允许重载方法仅仅是返回值不同,演示示例5:构造函数,Student zhang = new Student(); zhang.Name = “张靓靓“; zhang.Age = 20; zhang.Hobby = “唱歌歌“;,一种特别的方法,班级来了新学员 添加学员对象,学员类实例化对象、设置属性,初始属性若太多,设置麻烦,能否在实例化时设置属性?,pub

12、lic Student(string name, int age, string hobby) this.Name = name;this.Age = age;this.Hobby = hobby; ,Student zhang = new Student(“张靓靓“, 20, “唱歌歌“);,一次设置完成,类中加入这个方法,添加的方法叫做构造函数,构造函数,是类中的一种特殊的方法 构造函数名与类名相同,不返回任何值 可初始化成员变量,class Student public Student(string name, int age, string hobby)this.Name = name

13、;this.Age = age;this.Hobby = hobby; ,初始化成员变量,this 关键字引用类的当前实例,将参数的值,分别赋给当前实例的属性,使用构造函数,new 关键字 可以实例化一个新的对象 指定对某个带参数的构造函数,Student zhang = new Student(“张靓靓“, 20, “唱歌歌“);,每次创建类的实例都会调用此方法,实例化对象调用构造函数,使用 new 关键字,Student scofield = new Student();Student zhang = new Student(“张靓靓“, 20, “唱歌歌“);,实例化一个对象,实例化一个

14、新对象,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, “唱歌歌“);,方法名相同,参数不同,综合实战,构造函数的重载,可以使类实例化对象更灵活,演示示例6:重载(RssRead类的搭建),都是读写属性,private int

15、 a; public int A get return a; set a = value; ,你喜欢读哪段代码?,合格的程序要符合编码规则 直观易于理解、有意义的单词 方便维护 有利于调试,编码规则的必要性,如name,age,student,private int name; public int Name get return name; set name = value; ,无法理解是什么,Pascal命名法 变量采用有意义的单词 单词的一个字母大写 StudentName、MaxAge Camel命名法 变量采用有意义的单词 第一个单词的首字母小写 其余单词的首字母大写 name, className,Pascal 和 Camel 命名法,public class Student private string firstName;public string FirstName get return firstName; ,总结,简述属性和字段的区别? 只读属性中只有哪个访问器? 简述方法的重载时需要注意的问题? new关键字有什么作用? this关键字的作用是什么?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报