c#ppt06-面向对象编程(三)属性和索引

上传人:第*** 文档编号:49792507 上传时间:2018-08-02 格式:PPT 页数:23 大小:94KB
返回 下载 相关 举报
c#ppt06-面向对象编程(三)属性和索引_第1页
第1页 / 共23页
c#ppt06-面向对象编程(三)属性和索引_第2页
第2页 / 共23页
c#ppt06-面向对象编程(三)属性和索引_第3页
第3页 / 共23页
c#ppt06-面向对象编程(三)属性和索引_第4页
第4页 / 共23页
c#ppt06-面向对象编程(三)属性和索引_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《c#ppt06-面向对象编程(三)属性和索引》由会员分享,可在线阅读,更多相关《c#ppt06-面向对象编程(三)属性和索引(23页珍藏版)》请在金锄头文库上搜索。

1、第六讲 面向对象编程(三) 属性和索引5.2 属性n5.3.1 get访问器n5.3.2 set访问器属性在设计一个类时,总是要隐藏一些私有成员,将这些成员设 置成private,禁止类外面的方法直接访问这些成员,要访问 这些私有的成员可以通过一些公有的方法。例:用公有方法访问私有成员using System;class Empolyee double salary=100.00;public double AccessSalary( ) return salary; class Mainclass public static void Main( ) Empolyee e=new Empol

2、yee( );double s=e.AccessSalary( );Console.WriteLine(“s=0“,s);Console.ReadLine();C#给我们提供了一种更理想的方法,就是属性,通过属性让 用户像访问公有成员字段一样来访问类的私有成员字段。属 性机制中有两个属性访问函数get和set,即属性的读写是由get 和set来实现的。如果没有set方法则表示属性是只读的,如果 没有get方法则表示属性是只写的。在类中定义属性的格式:修饰符 类型名 属性名 get set 5.3.1 get访问器private string id; /定义了一个私有字段idpublic str

3、ing Id /定义了一个属性Id,注意不能与私有字段同名 get /属性中的get访问器 return id; 有了上述的属性定义后,我们就可以通过直接访问公有的Id属性 ,来实现对私有字段id的访问。get访问器完整例子using System;public class Student private string name;private string number;public Student(string na,string nu) name=na; number=nu; public string Name get return name;public string Number

4、get return number; public class AppMain public static void Main( ) Student s1=new Student(“zhaojing“,“200435672“);Console.WriteLine(“0“,s1.Nam e);Console.WriteLine(“0“,s1.Num ber); Console.ReadLine(); 5.3.2 set访问器private string id; /定义了一个私有字段idpublic string Id /定义了一个属性Id,注意不能与私有字段同名 get /属性中的get访问器

5、return id; set /增设的set访问器 id=value;set访问器意味着可以对成员的值进行写操作。如果我们对属性Id赋 值,就意味着调用了set访问器,如s.Id=“zhanghua”;(s是类实例)。属性的访问属性的访问实际上就是调用相应的set或get方法。s.Id=“zhanghua”表示对s对象的属性进行设置,相当与调用set_Id 方法;而Console.WriteLine(s.Id)表示对s对象的属性进行获取,相 当于调用get方法。编译器将自动产生相应的方法并调用。属性和域的选择属性可以实现只读或只写;属性还可以返回一些经过计算或处理 过的数据;属性的实现实际上是

6、方法的实现,可以具有方法的一 些特点,但是更接近状态表示本意,比set/get方法更方便。在C#中,属性和域的选择一般采取以下原则:1、若在类的内部记录事物的状态信息,用域变量;2、域变量一般用private修饰,以防止对外使用;3、对外公布事物的状态信息,则使用属性;4、属性一般与一个域变量或几个域变量有关。学生的专业分为jsj和Net。但是在类代码中使用专业代码0和1表示 ,而用户为了友好必须显示专业名称而不是代码。下面的属性代码 示例实现了这一功能: public class Student private string name;private int major;public Stu

7、dent(string na, string ma) name = na;if (ma = “jsj“) major = 0;if (ma = “net“) major = 1; public string Major get if (major = 0) return “jsj“;return “net“;set if (value = “jsj“) major=0;if (value = “net“) major = 1; public int getmajor()return major; class Program static void Main(string args)Studen

8、t s1 = new Student(“zhaojing“, “jsj“);Console.WriteLine(“Major:0“, s1.Major);Console.WriteLine(“major:0“, s1.getmajor();s1.Major = “net“;Console.WriteLine(“Major:0“, s1.Major);Console.WriteLine(“major:0“, s1.getmajor();Console.ReadLine(); 5.3 索引在数组中我们可以通过下标来方便地访问数组中的元素,索引器 可以让我们把对象当成数组一样来方便地访问,即可以是对

9、象能 用下标来得到一个值。class Myclass public object this int index get set定义以后的使用:Myclass mc=new Myclass( );/生成一个实例mcmc0=object1;/访问类型为object的私有成员 数组的第一个值Console.WriteLine(“0”,mc0);/读出mc中私有数组的第一个值索引的定义索引的定义与属性类似,也有get和 set方法,但是没有属性名字,而是 用this表示索引。使用参数列表来表示使用索引的参 数,至少需要一个参数。索引的使用是使用放括号 ,如mc0 , 即 对象名参数 class Myc

10、lass public object this int index get set索引使用举例:假设有一个数组,其中保存了公司职员的 姓名,利用一个索引来输出公司职员的信息。using System; class EmployeeName private string name;public EmployeeName( ) name = new string “zhang“, “li“, “wang“ ; public string this int indexget return nameindex; set nameindex=value; 定义索引器访 问员工姓名class AppMai

11、n public static void Main( )EmployeeName en=new EmployeeName( );for(int i=0;i 60) t1.second -= 60;t1.minute += 1; t1.minute += t2.minute;if (t1.minute 60) t1.minute -= 60;t1.hour += 1; t1.hour += t2.hour; return t1; 例3:建立Student类,具有私有成员avescore,以及2个实型数组 组成的数组scroe。具有只读属性Avescore,返回成员avescore。 构造函数能够

12、初始化数组score为空。方法setscore(int i,float score) 设置第i门课程成绩。方法countscore能够计算平均成绩。最后 主方法中要求用户输入2门课的成绩,并计算该学生的平均成绩 后输出。class Student private float avescore;private float score;public float Avescoreget return avescore;public Student() score = new float2; public void setscore(int i,float score)this.scorei-1=sc

13、ore;public void countave() float ave=0;foreach (float temp in score)ave = ave + temp;ave = ave / score.Length;avescore = ave; 注意setscore中用i-1是 因为数组下标是从0开始 的.foreach结构能够遍历 数组。class Program static void Main(string args)float a = 0;Student s = new Student();Console.WriteLine(“输入第一门课成绩:“);a=float.Parse(Console.ReadLine();s.setscore(1, a);Console.WriteLine(“输入第二门课成绩:“);a = float.Parse(Console.ReadLine();s.setscore(2, a);s.countave();Console.WriteLine(“平均成绩:0“, s.Avescore);Console.ReadLine();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号