C++与C#第六章.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++与C#第六章.ppt

* 下:加入一个类和使用类 * * * * * 下:定义对象、引用 * * 举例说明 访问举例 无法保证合法性 下:为类设置访问成员函数 * 优点 缺点 如何既能保证合法、又能直接访问? 引入类的属性 下:属性定义 * 定义格式 Get set访问器 数据类型和属性名与 成员变量对应 对应每个可访问的成员 可定义一个属性 下:举例 * 属性类型 属性名 访问举例 提示:只读属性、只写 下:多态与抽象 * Virtual Overide:必须用 下:抽象方法 * 抽象方法举例 必须重载抽象方法 下:数组定义 * * 1.8 定义对象 格式: 类名 对象名 = new 类名( … ) ; Time t1 = new Time ( 12, 10, 10 ); 返回一个引用,并不是返回指针 C#中没有指针概念, C#是一种安全的语言 12 10 10 t1 Time t2 = t1; t2.SetTime ( 0, 0, 0); t2 t1 = new Time ( 21, 0, 0 ); 21 0 0 0 0 0 自定义类都是引用类型 * 如何访问或改变对象的属性(成员变量)? class Time { public int hour; public int minute; public int second; …… } Time t1=new Time(12,0,0); t1.hour = 100; 无法保证成员变量赋值的合法性 * 1.9 类的属性 class Time { private int hour; private int minute; private int second; public int getHour() { return hour; } public void setHour( int v ) { if ((v=0)(v24)) hour = v; else hour = 0; } …… } 优点:防止设置非法值; 缺点:每个变量都需要记忆两个函数,访问和设置属性的方式繁琐 既保证赋值的合法性,又 可以直接访问和赋值呢? * 属性:是一种类的成员,用来控制其他对象对本对象成员变量的直接访问。 格式: public 数据类型 属性名 { get { //获得成员变量代码,例如: //return 成员变量; } set { //设置成员变量代码 //通过隐式参数value设置 } } 数据类型和属性名与相应的成员变量对应 对应每个可直接访问的成员变量,可定义一个属性。 get访问器 set访问器 * class Time { private int hour; public int Hour { get { return hour; } set { if ((value=0)(value24)) hour = value; else hour = 0; } } …… } 属性类型必须和相应成员变量类型一致 习惯约定:将成员变量名的首字母改为大写作为属性名 Time t1 = new Time(10,10,0); t1.Hour = 12; Console.WriteLine(“The hour is {0} . ”, t1.Hour ); 提示: 只读属性:只提供get 只写属性:只提供set * 1.10 多态性和抽象类 C#的多态性定义与C++类似 public class Animal { public virtual void Eat ( ) { Console.WriteLine (“Eat something”); } …… } public class Cat : Animal { public override void Eat ( ) { Console.WriteLine (“Eat small animals”); } …… } 重载基类虚函数时,必须用override关键字 * C#中抽象方法相当于C++中的纯虚函数概念,包含抽象方法的类为抽象类,抽象类不能直接实例化(定义对象) public abstract class Animal { public abstract void Eat ( ); …… } public class Cat : Animal { public override void Eat ( ) { Console.WriteLine (“Eat small animals”); } …… } 抽象类、抽象方法前必须有关键字

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档