C#第4章-类和对象-3讲义.pptVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#第4章-类和对象-3讲义

* 回顾 类的构造函数 构造函数的重载 第4章 类和对象-3 * * 目标 方法 方法的重载 静态成员和静态方法 4.1.3静态成员和非静态成员 * 类中的成员要么是静态,要么是非静态的。 将类中的某个成员声明为static,该成员称为静态成员。 类的非静态成员属于类的实例所有 每创建一个类的实例,都在内存中为非静态成员开辟了一块存储区域; 用实例访问,形式:实例名.非静态成员 而类的静态成员属于类所有 无论这个类创建了多少个实例,一个静态成员在内存中只占有一块区域,为这个类的所有实例所共享。 用类访问,形式:类名.静态成员 类的静态方法只能直接访问类的静态成员! 静态成员的应用 * 对于学生类示例,想要得到所有学生人数的信息,该如何获取呢?很显然,这不是某个具体学生张三、李四的属性,而是整个学生群体的属性,对于这种情况,可以说这种属性是类的属性,而非其对象的属性。 在面向对象中,类的这种属性称之为静态属性。 C#中使用static关键字来定义静态属性或方法,静态属性不能用实例化对象引用,只能用类引用。若属性是静态的,通过“类名.属性”访问;若属性是非静态的,则是通过“对象名.属性”访问。 思考: 项目中什么时候会用到静态成员? 解决方案: 网站中的当前在线人数,访问次数等; 访问数据库的方法; 示例: * class MyClass { public int a; static public int b; void Fun1() //定义一个非静态方法 { a = 10; //正确,直接访问非静态成员 b = 20; //正确,直接访问静态成员 } static void Fun2() //定义一个静态方法 { a = 10; //错误,不能访问非静态成员 b = 20; //正确,可以访问静态成员 } } public static void Main() { MyClass clsA = new MyClass(); clsA.a = 10; //正确 clsA.b = 20; //错误 MyClass.a = 30; //错误 MyClass.b = 40;//正确 } 用户自定义类访问规则: 1.静态方法只能访问静态成员变量 2.非静态方法即可访问静态成员变量又可访问非静态成员变量 3.静态方法或静态成员变量通过类名访问 4.非静态方法或非静态成员变量通过实例名称来访问 思考: * Main函数为什么是static? 在程序刚开始运行的时候,Main函数是程序的入口,此时未建立任何实例,因此无法调用实例成员,为了能够在程序的开始执行Main方法,必须将其声明为静态。要是main也要实例化的话,那谁又来实例化main呢? 示例 * 设计学生类,其中包含学号,姓名,年龄及学生总人数共4个属性,方法有Student()(构造函数),SetNumber(),GetStudent(),GetNumber()。 (1)以上属性和方法中哪些是非静态数据,哪些是静态数据? (2)设计程序实现该类。 解决方案 * public class Student { int stuId; string stuName; int stuAge; static int stuNum = 0; public Student(int stuId,string stuName,int stuAge) { this.stuId = stuId; this.stuName = stuName; this.stuAge = stuAge; } public static void SetNumber() { stuNum++; } public void GetStudent() { Console.WriteLine(stuId); Console.WriteLine(stuName); Console.WriteLine(stuAge); } public static void GetNumber() { Console.WriteLine(stuNum); } } public static void Main() { Student s1,s2; s1 =

文档评论(0)

441113422 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档