asp网站开发参考文献,成都住建局官网平台查询,上海集团平台app,网站开发快速盈利上一节#xff08;教学思路 c#之面向对象二#xff09;初步理解面向对象的基本概念中#xff0c;我没有提到任何的代码#xff0c;只是用语言和实例来说明什么是类和对象以及面向对象的特性等基本概念#xff0c;类是c#程序语言的重要核心#xff0c;也是构建应用程序最主… 上一节教学思路 c#之面向对象二初步理解面向对象的基本概念中我没有提到任何的代码只是用语言和实例来说明什么是类和对象以及面向对象的特性等基本概念类是c#程序语言的重要核心也是构建应用程序最主要的元素在.net类库中提供了大量支持创建各种应用程序功能的相关类类是一个庞大的内容我要分成两节来讲解本节课我要教同学们如何声明类、对象以及定义类成员针对类本身的组成与对象关系进行详细的说明下节课我们会深入的学习类。 首先让我们回忆一下上节课说过的一些概念什么是类什么是对象呢类就是具有相同的属性和功能的对象的抽象的集合而对象呢就是这个类中的一个实体属于一个类的对象必须包含共同的特征而对象之间又因为各自的特性和行为的不同区分。用我听过的一个笑话来解释一下上面我说过的话比如说人类是一个类那么一个身高1米的孩子和2米24的姚明站在一起我们一定会说都是人孩子和姚明就是人这个类的两个对象我们不能说因为孩子身高太矮就把他说成是猴子身高、姓名、性别、篮球打得怎么样等特性就是区别这两个对象的要素。 这是现实生活中的实例我现在用个程序用的实例来说明一下类和对象在面向对象的领域里类是用来封装应用程序的功能和逻辑的。比如我们以后会学习的一章文件、目录的操作中将使用Dir类Dir是目录的意思那么Dir类就是对目录进行的管理和维护的操作类也就是说只要对目录进行操作都应该使用Dir类的一个对象让这个对象来做你想要做的工作比如让一个dir类的对象创建一个目录再用这个对象来删除目录同时我们还可以创建多个Dir类的对象来做工作这时我们就需要考虑如果是对同一个目录进行操作创建过多的对象会造成资源上的浪费所以同学们在以后的编程中要记得尽可能的简化程序。 我们在编程过程中.Net类库会提供很多实现功能的类比如刚才提到的Dir类还有我们经常用到负责数据输出到控制台所使用的Console类我们可以直接用但是如果我们需要自己定义类时比如将来我们要做一个企业网站在实现后台操作时我们可以把对新闻的增加、删除、修改、查找都定义在一个News类中把对图片的操作定义在另一个Pictures类中比如限制上传图片的类型、大小等这样当你想对新闻做操作时就使用News类的一个对象来工作如果想对图片做操作就用Pictures类的一个对象来做工作日后如果想修改维护网站时你想修改新闻功能你只需要修改News类即可不会影响图片的功能这就是类的一个好处也就是面向对象的一个特性封装性。通过这两个实例我们基本上应该理解了类和对象的概念下面我们来学习如何创建一个类同时声明一个类的实例也就是类的一个对象。 定义类 定义类的基本语法形式为([]内的可以省略如省略代表修饰符即为默认值) [访问修饰符/类修饰符] Class ClassName [:Class-base] { Class -body; } 其中[类修饰符]中包括访问修饰符和new、abstract、sealed这三种[访问修饰符] 我们上节课学习过是用来界定这个类允许以何种级别访问其他这三种我们在本节课也将学习到接着看类的定义紧跟修饰符的是Class关键字和一个用来命名该类的标识符[:Class-base]定义此类所继承的基类或实现的接口这部分我们也会在以后学习到这里不做过多的解释大家只要知道如果省略的话代表这个类没有除了继承了Object类外没有其他父类或接口这里提到了Object类Object类是所以类的父类这里涉及到了C#底层设计比较难理解也与我们实际开发暂无太大联系可以不考虑。接下来的“{}”中封装了类的主体Class -body中包含类中所有的相关成员它可以包括数据成员字段、常量、函数成员方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数和嵌套类。这些成员我们依次都会学到先来说说嵌套类它只的意思是类中还可以有类大家先这样理解就可以了具体嵌套的类有哪些特性我们一会也会讲到。 下来看看下面的代码实例我们来定义一个类军人Armyman类类中有3中成员常量、字段、方法。 类的声明 1 //定义一个军人类军人类的标识符为Armyman默认缺省访问修饰符为private除了Object类外没有继承其他类 2 class Armyman 3 { 4 //定义了一个军人国籍的常量为中国,访问修饰符是公有的。 5 public const string country 中国; 6 //定义了一个军人姓名的字段访问修饰符是公有的。 7 public string ArmymanName; 8 //定义了一个军种字段我们将要在后面的实例中将这个字段和下面的方法变成属性 9 string Armytype;10 //定义了一个军种功能的方法传递了军种的参数到方法内部通过对军种的不同的判断输出不同的功能。下面的判断最好使用swicth语句11 public void ArmyFunction(string Armytype)12 {13 if (Armytype 陆军)14 Console.WriteLine(现代陆军都是大规模的机械化部队拥有大量的重装备和后勤补给。);15 if (Armytype 海军)16 Console.WriteLine(杜鲁门曾说过海军到哪里国家的权利就到哪里 .);17 if (Armytype 空军)18 Console.WriteLine(战略空军将使战争形态向可控战争转变。);19 else20 Console.WriteLine({0}不是兵种请输入现代战争中的三大兵种海军、陆军、空军,Armytype);21 } 22 } 解释一下上面的这段代码类成员首先定义了一个常量常量的定义是使用const关键字而且定义的同时必须赋值。常量就是在程序中永远不能改变的数据必须通过类的名字进行引用如果我们定义了一个常量并且赋给常量一个值那么想改变这个常量的值时编译器便会报错。其他两种成员通过注释已经很清楚了在这里我就不解释了我们看一下访问修饰符当一个成员没有加修饰符时默认为private即私有的成员。上节课我们学到当一个成员定义为private时只有类的内部成员可以使用它我们在这个例子中有一个成员没有加public修饰符 目的就是为了下面的实例在创建对象的时候 体会到如果是private成员定义后在这个类的外部是无法访问的而public成员可以访问到。类的定义我们就先说到这接下来我们来看类实例及成员引用。 类实例及成员引用 当我们创建完一个类如果要使用这个类必须在程序里创建类的实例对象通过这个实例来引用类中所定义的方法成员完成所需的工作。创建实例对象时必须使用new关键字这个关键字我们在集合和哈希表对象的创建时用到过基本方法一致就是用new关键字产生一个指向类实例对象所在位置的引用。实例化类对象的基本语法为 ClassName ObjNamenew ClassName[参数] 类的名字 对象名 是否有参数、多少个参数由类的构造函数决定现在我们都使用无参数来创建对象 new关键字用来创建真正的ClassName类的实例对象并返回这个对象的引用“”运算符则将此对象的引用在托管堆中的地址指定给ObjName变量也就是说ObjName中存放的指向托管堆中ClassName对象的地址这个ObjName存放在线程堆栈中当这段程序执行后通过ObjName这个对象名称便可以直接引用ClassName类所定义的成员。 我们现在来紧跟着上个例子创建一个军人类Armyman 的实例对象ASoldiers士兵 Armyman ASoldiersnew Armyman 创建完成如果想让这个士兵完成一些Armyman类中功能就要使用运算符.,比如ASoldiers.ArmymanName就可以给士兵起名字如图1这个过程就叫做引用。 下面的实例我们来具体完成一下类的创建和声明对象以及对象的引用。 定义类、声明对象引用类成员 1using System; 2using System.Collections.Generic; 3using System.Text; 4 5namespace testcsharp 6{ 7 //定义一个军人类军人类的标识符为Armyman除了Object类外没有继承其他类 8 class Armyman 9 {10 //定义了一个军人国籍的常量为中国,访问修饰符是公有的。11 public const string country 中国;1213 //定义了一个军人姓名的字段访问修饰符是公有的。14 public string ArmymanName ;1516 //定义了一个军种字段我们将要后面的实例中将这个字段和下面的方法变成属性17 public string Armytype ;1819 //定义了一个军种功能的方法传递了军种的参数到方法内部通过对军种的不同的判断输出不同的功能。20 public void ArmyFunction(string Armytype)21 {22 switch (Armytype)23 {24 case 陆军:25 Console.WriteLine(现代陆军都是大规模的机械化部队拥有大量的重装备和后勤补给。);26 break;27 case 海军:28 Console.WriteLine(杜鲁门曾说过海军到哪里国家的权利就到哪里 .);29 break;30 case 空军:31 Console.WriteLine(战略空军将使战争形态向可控战争转变。);32 break;33 default :34 Console.WriteLine({0}不是兵种请输入现代战争中的三大兵种海军、陆军、空军, Armytype);35 break;3637 }38 }39 /**//* 我们补充定义了一个静态static的军种功能的方法40 * 和上面的方法不同的是无参、并且多了static41 * 相同的是方法的标识符相同都是ArmyFunction这就构成了方法的重载42 * 另外使用了static关键字使得这个方法不能通过对象来引用而必须通过类名来引用*/43 public static void ArmyFunction()44 {45 Console.WriteLine(无论什么军种作用都是保卫国家人民、捍卫国家尊严。);46 }47 }48 class Program49 {50 //Main方法是程序的入口点所以无论这个Program类放到哪里程序都会从Main方法开始执行。51 static void Main(string[] args)52 {53 //我们来创建一个军人类Armyman 的实例对象ASoldiers士兵54 Armyman ASoldiers new Armyman();55 56 //我们来定义一个string类型的变量soldiercountry接受国籍并且把它打印出来。57 //因为国籍country是常量必须通过类名进行引用所以使用Armyman . 也就是类名.。58 //有因为在Armyman类中常量country的修饰符是public所以在Armyman类的外部是可以访问到的59 string soldiercountry Armyman.country;60 Console.WriteLine(士兵的国籍是soldiercountry );61 Console.WriteLine();6263 //我们来给这个士兵起个名字叫“许三多”因为ArmymanName军人姓名在Armyman类中是public的字段64 //在Armyman类的外部可以访问到所以通过对象名.,来引用军人姓名。65 ASoldiers.ArmymanName 许三多;666768 //下面我们定义兵种如果按照上一个例子中的第九行Armytype的修饰符是默认缺省的private69 //现在我们可以试一下是用对象名点不出来的也就是无法访问到。70 //图1就是Armytype的修饰符为private时输入对象名ASoldiers和“.”后的截图我们看是没有Armytype这个成员供对象引用的。71 //为了讲解属性的作用我们来把Armyman类中的Armytype字段改成public公有的如第现在Armytype成员就可以点出来。72 //我们给Armytype赋个男性这个值并且打印出来。73 ASoldiers.Armytype 男性;74 Console.WriteLine(士兵{0}的兵种是{1},ASoldiers .ArmymanName,ASoldiers.Armytype);75 Console.WriteLine();7677 /**//*很明显我们发现了对于Armytype类中的Armytype兵种字段存在了一个漏洞就是男性不是兵种的一种。78 * 这时我们可以通过下面的方法弥补一下,也就是当我们输入兵种后将兵种作为参数带到Armyman的ArmyFunction方法中进行判断再输出兵种的功能。*/79 ASoldiers.ArmyFunction(ASoldiers.Armytype);80 Console.WriteLine();8182 ASoldiers.Armytype 陆军;83 Console.WriteLine(士兵{0}的兵种是{1}, ASoldiers.ArmymanName, ASoldiers.Armytype);84 ASoldiers.ArmyFunction(ASoldiers.Armytype);85 Console.WriteLine();86 //这样就能阻止一部分的错误但是这还不是最合理的下节课我们将要教授同学们属性的使用完全解决了这个问题。8788 //下面我们再来使用一下static修饰的ArmyFunction的重构方法89 //这个重构的方法因为是static静态的所以需要用类名引用90 Armyman.ArmyFunction();9192 }93 }94 95} 运行结果如下 士兵的国籍是中国 士兵许三多的兵种是男性 男性不是兵种请输入现代战争中的三大兵种海军、陆军、空军 士兵许三多的兵种是陆军现代陆军都是大规模的机械化部队拥有大量的重装备和后勤补给。 无论什么军种作用都是保卫国家人民、捍卫国家尊严。 我们通过实例学习了声明类、创建类实例对象以及类成员因为修饰符的部分访问权限和引用方式也是不同这里做个总结当成员修饰符是public时在第二方Program类中才能被访问到如果类成员是常量const或是static静态的需要用类名来引用其他的类成员都是用对象名来引用。下面说一个static关键字被static关键字修饰的类成员叫做静态成员相对的没用static关键字修饰的统称为实例成员被static关键字修饰的类叫做静态类那么类还有哪些类型呢除了静态类含static、实例类不含static还有两种类分别是抽象类和密封类我会在系列教案思路的继承一中具体讲解类的分类的内容。下一节我们来继续上一个例子中提到的改善军种的功能学习类二属性。 转载于:https://www.cnblogs.com/wangfang224120999/archive/2008/12/11/1352433.html