资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章,用对象思考:属性和方法,1,理解类与对象的概念,理解属性和方法的概念,能够定义一个简单的类,本章目标,对象,对象是人们要进行研究的任何事物,颜色:灰色,排量:,3.0,刹车,产地:德国,行驶,名字:保时捷,行为,状态,颜色:红色,排量:,4.0,刹车,产地:意大利,行驶,名字:法拉利,行为,状态,描述汽车的特征和行为,有各自不同的状态,类和对象,小汽车,颜色:灰色,排量:,3.0,刹车,产地:德国,行驶,名字:保时捷,行为,状态,类的实例化,是由类具体化对象,类,产地,车体颜色,行驶,刹车,归纳一组相似对象的共性,对象,属性,方法,类描述一组相似对象的共性,类和对象的应用,类和对象的简单应用,/,Car ferrari = New Car();,ferrari.Run();,/,类,对象,实例化对象,调用方法,public class Student,int age = 26;,/,姓名,private string name;,public string Name,get return name; ,set name = value; ,/,问候,public void SayHi(),类和类的成员,类的成员,字段,属性,方法,类名,自定义一个类,自定义类,DBHelper,class DBHelper,/,数据库连接字符串,private static string connString = , ;,/,数据库连接,Connection,对象,public static SqlConnection 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;,私有成员,公有成员,实例化一个对象,可以访问,演示示例,1,:,访问修饰符,无法访问编译错误,数据安全,static void Main(string args),student myStudent = new student();,myStudent.age = -2;,myStudent.idNumber = 123456;,非法数据,身份证号不能被修改,无法获得数据,无法正常赋值,有时候将类中的字段公开是不安全的,如果设为私有成员,能否对这些字段进行规则约束或者只读呢?,在类中使用属性,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,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 S int num1,ref int num2),int temp;,temp = num1;,num1 = num2;,num2 = temp;,class Program,static void Main(string args),int num1 = 5, num2 = 10;,myS(ref num1, ref num2);,回顾一下,,Swap,方法在另一类中如何调用?,静态方法使用类名调用,静态方法,静态方法和实例方法,使用,static,修饰的方法称为静态方法,使用实例对象调用的方法叫做实例方法,静态方法,实例方法,static,关键字,不需要,static,关键字,使用类名调用,使用实例对象调用,可以访问静态成员,可以直接访问静态成员,不可以直接访问实例成员,可以直接访问实例成员,不能直接调用实例方法,可以直接访问实例方法、静态方法,调用前初始化,实例化对象时初始化,为什么要重载,public int Sum(int para1, int para2),return para1 + para2;,整形参数,返回值整型,如果想让两个,string,型、两个,double,型相加,怎么做?,编写两个不同名字的方法,这样我们在进行调用时,要先判断是什么类型,能否不判断直接就能相加呢?,方法的重载,同一个类中添加几个名字相同,参数与返回值不同的方法,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),重载的方式,基于不同类型参数的重载,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 = ,唱歌歌,;,一种特别的方法,班级来了新学员,添加学员对象,学员类实例化对象、设置属性,初始属性若太多,设置麻烦,能否在实例化时设置属性?,public 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;,this.Age = age;,this.Hobby = hobby;,初始化成员变量,this,关键字引用类的当前实例,将参数的值,分别赋给当前实例的属性,使用构造函数,new,关键字,可以实例化一个新的对象,指定对某个带参数的构造函数,Student zhang = new Student(,张靓靓, 20, ,唱歌歌,);,每次创建类的实例都会调用此方法,实例化对象调用构造函数,使用,new,关键字,Student scofield = new Student();,Student zhang = new Student(,张靓靓, 20, ,唱歌歌,);,实例化一个对象,实例化一个新对象,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,类的搭建,),点击次数,Clicks,描述,Description,url,地址,Url,构造函数,显示名称,DisplayName,方法,属性,都是读写属性,private int 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,关键字的作用是什么?,
展开阅读全文