收藏 分享(赏)

C#_chp7.ppt

上传人:hskm5268 文档编号:8004021 上传时间:2019-06-03 格式:PPT 页数:29 大小:771.50KB
下载 相关 举报
C#_chp7.ppt_第1页
第1页 / 共29页
C#_chp7.ppt_第2页
第2页 / 共29页
C#_chp7.ppt_第3页
第3页 / 共29页
C#_chp7.ppt_第4页
第4页 / 共29页
C#_chp7.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、第七章,类,,巨匠IT培训,目标,类的声明 类的成员 静态成员 字段和属性 构造函数,,巨匠IT培训,型号,价格,里程,起动,停车,行驶,车轮数量,档的数量,加速,换档,刹车,名称,颜色,品种,摇尾巴,吃东西,犬 吠,属性,行为,属性,行为,属性,行为,,巨匠IT培训,类: 相对对象而言,类似于模板或蓝图 包含方法和数据,对象: 是类的实例 使用关键字 new 创建 对象具有状态和行为,对象,类,,巨匠IT培训,类,类是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。,语法:,其他修饰符访问修饰符 class ,/ 类的主体 ,示例:

2、class Employee / 类的主体 ,/ 成员变量 / 成员方法,,巨匠IT培训,创建对象,我们通过执行下面语句创建一个对象: Circle circle1 = new Circle();该声明语句执行二个功能: 第一声明一个称为circle1的Circle类类型的变量,该变量不定义对象,实际上它仅仅是一个包含所创建对象引用的引用变量,第二,使用new运算赋可以创建一个实际物理对象,并将此对象的引用分配给circle1。 因此可以编写成独立分开的形式: Circle circle1; circle1=new Circle();,,巨匠IT培训,访问修饰符 2-1,Teacher 类,p

3、rivate 成员,protected 成员,public 成员,internal 成员,Student 类,不可访问,不可访问,可以访问,只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员,,巨匠IT培训,访问修饰符 2-2,,巨匠IT培训,其他类修饰词,,巨匠IT培训,字段和属性,保存类的实例的各种数据信息,C#提供了两种方法:字段和属性。字段存储着类满足其设计所必须拥有的数据。通过属性实现了良好的数据封装和数据隐藏,,巨匠IT培训,字段,字段表示类或结构中的对象或值 字段使类和结构可以封装数据 字段可标记为 public、private、prot

4、ected、internal 或 protected internal。 例:public class Employeeprivate string _name; /字段private uint _age; /字段,,巨匠IT培训,定义字段,当从类创建一个对象实体时,该对象将包含该类定义里所有的变量(字段),这些变量可分为两个大类,属于对象实体个别的以及属于类全体的 每个对象实体都会拷贝一份属于对象自己的变量,可各自设置它们的值,这种变量称为对象实体变量 属于类全体的变量为该类所有的对象所共同拥有,不论你对该类创建多少个对象,属于类的变量只保存一份,这种变量称为类变量,访问修饰符 数据类型 字

5、段名 = 缺省值可空 可空,,巨匠IT培训,字段设计原则,不要提供公共的或受保护的实例字段对不会更改的常量使用常量字段对预定义对象实例使用公共静态只读字段不要将可变类型的实例指定给只读字段,,巨匠IT培训,静态成员和非静态成员,将类中的某个成员声明为static,该成员称为静态成员。 类中的成员要么是静态,要么是非静态的。静态成员是属于类所有的,非静态成员则属于类的实例对象。,,巨匠IT培训,属性2-1,属性是对现实世界中实体特征的抽象, 它提供了对类或对象性质的访问。C#中的属性更充分地体现了对象的封装性: 提供灵活的机制来读取、编写或计算私有字段的值。 可以像使用公共数据成员一样使用属性,

6、不直接操作类的数据内容, 通过称作“访问器”的特殊方法进行访问,它借助于get和set对属性的值进行读写。,,巨匠IT培训,属性2-2,属性结合了字段和方法的多个方面 例:public class Employeeprivate string _name; /字段private uint _age; /字段public string Name /属性,可读写set _name = value; /value关键字,传递所赋值get return _name;public uint Age /属性,只写set _age = value;,,巨匠IT培训,属性特征,属性使类能够以一种公开的方法获取

7、和设置值,同时隐藏实现或验证代码。get属性访问器用于返回属性值,而set访问器用于分配新值。这些访问器可以有不同的访问级别。value关键字用于定义由set索引器分配的值。不实现set方法的属性是只读的,同样不实现get方法的属性是只写的。除了使用了abstract修饰符的抽象属性,每个访问器的执行体中只有分号“;”,其它所有属性的get访问器都通过return来读取属性的值,set访问器都通过value来设置属性的值。,,巨匠IT培训,构造函数 2-1,构造函数是类的一种特殊方法,每次创建类的实例都会调用它,访问修饰符,(),/ 构造函数的主体 ,语法:,public class Empl

8、oyee / 默认构造函数Employee()_qualification = “研究生“; ,示例:,,巨匠IT培训,static void Main(string args) / 调用默认构造函数Employee objEmployee = new Employee();Console.WriteLine(“资格= “ + objEmployee._qualification);Console.WriteLine(“薪水= “ + objEmployee._salary); ,构造函数 2-2,class Employee ,private string _name;private cha

9、r _gender;private string _qualification;private uint _salary;,/ 默认构造函数private Employee()_qualification = “研究生“;,,巨匠IT培训,参数化构造函数 2-1,访问修饰符, (),/ 构造函数的主体 ,语法:,(参数列表), / 参数化构造函数 Employee(string strQualification) _qualification = strQualification; ,示例:,,巨匠IT培训,构造函数3-1,是类中的特殊类型的方法 是每次创建对象时要调用的函数 通常用于初始化

10、与类同名 不返回值,,巨匠IT培训,构造函数3-2,using System; public class DaysInYear private int days;public DaysInYear()days = 365;static void Main(String args)DaysInYear newDaysInYear=new DaysInYear();Console.WriteLine(newDaysInYear.days); ,无构造函数输出 的结果是0,有构造函数输出 结果是365,,巨匠IT培训,this 关键字,this仅限于在构造函数、类的方法和类的实例中使用。 在类的构造

11、函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。 在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。 在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。 在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。 经常在构造函数或者类方法中,如果传入参数和类字段同名,一定需在类字段前加上this。,,巨匠IT培训,this示例,using System; class A private int x;public A(int x)this.x = x;public void PrintX()x = 5

12、;Console.WriteLine(“The value of x is: 0“, x);Console.WriteLine(“The value of this.x is: 0“, this.x);public static void Main()A a = new A();a.PrintX(); ,,巨匠IT培训,带参数的构造函数3-3, public class DaysInYear private int days;public DaysInYear()days = 365; public DaysInYear(int day)days = day;public DaysInYear

13、(String dayOne)days =Convert.ToInt32(dayOne);public void setDay(int newDays)days = newDays; ,传递不同个数的参数传递个数相同但类型不同的参数,,巨匠IT培训,析构函数,是用于执行清除操作的特殊方法,(),/ 析构函数的主体 ,语法:, Employee() ,示例:,,巨匠IT培训,析构函数特征,不能在结构中定义析构函数,只能对类定义析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数,它们是被系统调用的。 析构函数既没有修饰符,也没有参数。,,巨匠IT培训,练习:定义一个时间类 (Time)包含 时,分,秒 三个成员变量; 并把它们封装成属性(属性在赋值时需要加限制) ; 然后在 Main方法中声明 一个长度为三的 时间类 数组 ,并使用循环 输入时间的值 和打印出它们的值简单算法: 有300瓶啤酒,三个空瓶可以换一瓶啤酒,一共可以喝多少瓶?还剩多少个空瓶?,,巨匠IT培训,总结,类的声明 类的成员 静态成员 字段和属性 构造函数,

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

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

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


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

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

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