欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年C#教程—最佳的入门教程 .pdf

    • 资源ID:34243926       资源大小:194.93KB        全文页数:25页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年C#教程—最佳的入门教程 .pdf

    C#语言 第一部分面向对象(一)类和 Main 方法using System; namespace Edu.Study.OO.MainMethod classProgram static void Main(string args) Console.WriteLine( Hello World ); C#语言第一部分面向对象(二)类类是面向对象的基础,类表现出的最基本特性是其“ 封装性 ” 。类是某一些具有相同属性和行为对象的抽象。例如:波斯猫、野猫、家猫、花猫都具有相同的属性和行为,所以被抽象成为猫类。类具有属性和方法,表示这个类所代表的对象具有的特性和行为。从类实例化对象后,对象就可以给类中定义的属性“ 赋值 ” 或运行类中定义的方法,属性和方法和每个对象相关,即相同类的不同的对象具有相同的属性,但属性的属性值可以不同;具有相同的方法,但方法运行的结果可以不同。类需要将和其相关的属性和方法“ 封装 ” 起来,并和对象进行绑定。看下面的例子,自行理解:using System; namespace Edi.Study.OO.Class public class Person private string name; private int age; private bool sex; /* 属性定义,在面向对象编程里,字段作为保存属性值的变量,而属性则需要使用特殊的行来表现。一般来说一对 get/set行为用来展现对象的属性,其中get用于 2 获取该对象的属性;set用于设置该对象的属性get/set 称为属性的访问器 */姓名属性public string Name get / get访问器必须返回一个值,作为该属性的“属性值returnthis.name; /. 运算符的作用是访问某个对象的属性或方法/this关键字表示“当前实例”,即哪一个对象正在操作属性访问器,this就表示哪个对象/所以一般说法, this表示“当前对象”,使用this.访问的是“声明在本类中”的属性和方法 set名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 25 页 - - - - - - - - - / set访问器具有一个局部变量value,该值是从外部设置给该属性的值this.name = value; / 属性的基本要求: get访问器必须返回一个值,该值类型和属性类型相同;set访问器可以设置一个值,这个值保存在什么地方倒无所谓 / 年龄属性public int Age get return age; set age = value; / 性别属性public bool Sex get return sex; set sex = value; / 显示个人信的方法public void ShowMe() / 使用 this.Name,此时属性 Name的get访问器会运行,返回 Name属性的属性值,其它属性同理Console.WriteLine( 姓名:0 ,性别: 1 ,年龄: 2 岁。, this.Name, this.Sex, this.Age); /* 字段、属性和方法前面,都可以使用public, protected, private和internal这四种访问修饰符来修饰;public表示字段、属性或方法为 “公开”,公开的成员不仅可以被类中的其它成员访问到,也可以通过这个类的对象访问到;private表示字段、属性或方法为“私有”, 私有的成员只能被类中的其它成员访问到,无法通过类的对象访问到; protected和internal稍候介绍; */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 25 页 - - - - - - - - - classProgram staticvoid Main(string args) / 通过 new运算符可以实例化一个对象/ 实例化 Person类的对象,保存在 person变量中Person p1 = new Person(); Person p2 = new Person(); / 设置 person对象的各个属性,使用 person.Name = 王宝宝 ,Name属性的 set访问器会被运行,等号右边的值王宝宝 传递给 set访问器的 value变量p1.Name = 王宝宝 ; p1.Age = 21; p1.Sex = false; p2.Name = 李大大 ; p2.Age = 18; p2.Sex = true; / 使用 ” .” 操作符访问 person对象的 ShowMe方法,显示结果p1.ShowMe(); p2.ShowMe(); C#语言 第一部分面向对象(三)对象的构造上一章我们介绍了一个Person 类,它可以正常工作,但从逻辑上存在很多问题。首先我们注意到,Person 类对象实例化完毕后,我们才去确定其属性,如Name,Sex,Age 属性。但客观情况下,这些属性应该是同对象生成一起赋值的。一句话,当对象被实例化的同时,对象的属性就应当有初始值,反映到代码中,就是“ 用来保存属性值的字段应该有初始值” 构造器,也成为构造方法,构造函数,就是专门用来做这件事情的。一个类可以有0 或多个构造器,在有多个构造器的情况里,各个构造器的参数必须不同。在C#类中,有这样一类特殊的方法,没有返回值类型,方法名必须和类名相同,可以有参数列表。这类方法就叫做构造器,构造器通过new 操作符指定,在实例化对象的同时运行。我们用构造器来改造上一章讲到的Person类。using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Edu.Study.OO.Constructor / 人类,这次我们修改一下Person类/ 在Person 类生成对象的同时, Name属性,Sex属性和 Age属性的值就应该确定,而不应该在生成对象后再进行设置,这是不符合客观规律的。/ 在对象实例化的同时对属性进行设置,就要用到构造器public class Person private string name; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 25 页 - - - - - - - - - private int age; private bool sex; / 人类,这次我们修改一下Person类/ 在Person 类生成对象的同时, Name属性,Sex属性和 Age属性的值就应该确定,而不应该在生成对象后再进行设置,这是不符合客观规律的。/ 在对象实例化的同时对属性进行设置,就要用到“构造器”public Person() this.name = 小王; this.age = 22; this.sex = true; / 带有参数的构造器public Person(string name, int age, bool sex) this.Name = name; this.Age = age; this.sex = sex;/ 这里, Sex属性 /带有部分参数的构造器public Person(int age, bool sex) this.Name = 小?王a ?; this.Age = age; this.sex = sex;/ 这里, Sex属性 /带有部分参数的构造器public Person(bool sex) this.Name = 小?王a ?; this.Age = 22; this.sex = sex;/ 这里, Sex属性 public string Name get / get访问器必须返回一个值,作为该属性的“属性值returnthis.name; set 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 25 页 - - - - - - - - - / set访问器具有一个局部变量value,该值是从外部设置给该属性的值this.name = value; public int Age get return age; set age = value; / 性别属性,这次我们去掉了Sex的set访问器。/ 由于通过构造器已经设置了Sex属性,所以无需通过 set访问器来设置该属性/ 按照一般情况, Sex属性在对象实例化后,不应该设置该属性。/ 属性可以只具有 set访问器或 get访问器,即“只读”或“只写”的属性public bool Sex get return sex; / 显示个人信息的方法public void ShowMe() Console.WriteLine( 姓名: 0 ,性别: 1 ,年龄: 2 岁。, this.Name, this.Sex, this.Age); classProgram staticvoid Main(string args) /删除掉 public Person()构造器,查看程序编译情况/删除掉所有的构造器,查看程序编译情况Person person = new Person (); person.ShowMe(); / person.Sex = true;/ 只读属性禁止了给属性设置值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 25 页 - - - - - - - - - person = new Person (false); person.ShowMe(); person = new Person (18, true); person.ShowMe(); person = new Person (小丽, 23, false); person.ShowMe(); 我们给 Person 类增加了若干个“ 构造器 ” ,并修改 Sex 属性为只读,从而让Person 类更更符合客观实际。对于任何一个类,可以不人为提供构造器,此时编译器会赋予类一个“ 默认构造器 ” ,即没有参数的构造器。这个构造器什么也不做,仅仅是为了new 操作符能够得以指定一个构造器。而我们一旦定义了有参数的构造器,编译器便会这样认为“ 这个类的对象必须提供参数才能够实例化” ,便不再会提供无参数的默认构造器了。所以一个类如果同时需要有默认构造器和有参数的构造器,则默认构造器必须手动提供,不要指望编译器会自动生成。现在我们可以完整定义new 操作符的语法规范:类名变量名= new 类构造器名 (构造器实参数列表); C#语言 第一部分面向对象(四)字段默认值C#中,可以给类字段以一个默认值,这样一方面可以简化构造器的代码,另一方面较为直观,是一种推荐的方式。这一章比较简单,可结合上一章深入理解构造器的作用。看代码:using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Edu.Study.OO.DefaultValue / 还是那个人类。/ 通过构造器public classPerson /保存名字的字段,默认值为小王private string name = 小王 ; /保存年龄的字段,默认值为0 private int age = 22; /保存性别的字段, true为男性, false为女性,默认值为女性private bool sex = false; /默认构造器,由于字段定义了默认值,所以构造器中无需给字段赋值public Person() /带有参数的构造器,这里的构造器给所有字段都赋了值,所以无视默认值public Person(string name, int age, bool sex) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 25 页 - - - - - - - - - this.Name = name; this.Age = age; this.sex = sex; / 带有部分参数的构造器,这里只给sex和age字段赋值,而 name 字段本身就有默认值public Person(int age, bool sex) this.Age = age; this.sex = sex; / 这里, Sex属性 / 带有部分参数的构造器,这里只给sex字段赋值,其它字段都有默认值public Person(bool sex) this.sex = sex; public string Name get / get访问器必须返回一个值,作为该属性的“属性值returnthis.name; set / set访问器具有一个局部变量value,该值是从外部设置给该属性的值this.name = value; public int Age get return age; set age = value; public bool Sex get名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 25 页 - - - - - - - - - return sex; /显示个人信息的方法public void ShowMe() Console.WriteLine( 姓名: 0 ,性别: 1 ,年龄: 2 岁o。, this.Name, this.Sex, this.Age); classProgram staticvoid Main(string args) / 删除掉 public Person()构造器,查看程序编译情况/ 删除掉所有的构造器,查看程序编译情况Person person = new Person (); person.ShowMe(); / person.Sex = true;/ 只读属性禁止了给属性设置值person = new Person (false); person.ShowMe(); person = new Person (18, true); person.ShowMe(); person = new Person (小?丽 ?, 23, false); person.ShowMe(); 在声明字段的同时,可以用赋值运算符(=)在字段后面直接加上一个值(例如第17 行) ,但这和给变量赋值是两个概念。以赋值运算符跟随在字段之后的值称为字段的“ 默认值 ” 。这只是一种形式,并不是写在这里就在这里发生赋值,真正发生赋值的时机还是在构造器中,只不过无论我们通过哪个构造器创建类的对象实例,这个构造器中,没有显式赋值的字段,都会由编译器增加一句赋值代码,将该字段赋值为设定的默认值。其实,无论我们是否给字段增加了默认值,字段都具备默认值的,只不过如果我们没有人为增加默认值,字段的默认值将是0 或 null。C#语言 第一部分面向对象(五)继承在现实生活中,类和类之间可能会有一种这样的关系:一个类是另一个类的扩展,反过来讲,后一个类是前一个类的基础。例如:动物类是猫类的基础,猫类是动物类的扩展。这种关系称为继承,即猫类继承了动物类。被继承的类称为父类(C+说法) ,基类( C#说法)或超类(Java说法),另一个类叫做子类。怎么叫无所谓,关键名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 25 页 - - - - - - - - - 看效果。所谓扩展,就是子类拥有超类的一切特征(包括属性和方法),而子类还可以在超类的基础上添加自身的属性和方法。例如:猫类拥有动物类的一切属性和行为,但猫类还具有自身的属性(例如长胡子,喵喵叫)和行为(例如磨爪子,抓耗子) 。子类虽然拥有超类的一切特征,但并不是说子类可以任意的去访问继承下来的这些超类特征,子类只能访问到超类中访问修饰符为public 或 proctected 的那部分属性和方法,其余的属性和方法无法直接访问。C#的这种继承成为无条件继承,即子类必须继承超类的所有特性,无法选择。看代码:using System; namespace Edu.Study.OO.Inherit public class Person /保存名字的字段/访问修饰符 protected表示被修饰的成员不仅可以被当前类访问,还可以被该类的所有子类访问,但不能通过对象被其它类访问。protectedstring name; protectedint age; protectedbool sex; /带有参数的构造器public Person(string name, int age, bool sex) this.Name = name; this.Age = age; this.sex = sex; public string Name get returnthis.name; set this.name = value; public int Age get return age; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 25 页 - - - - - - - - - set age = value; public bool Sex get return sex; set sex = value; / 显示个人信息的方法public void ShowMe() Console.WriteLine( 姓名: 0 ,性别: 1 ,年龄: 2 岁。, this.Name, this.Sex, this.Age); / 男人类,从 Perso类继承public class Man : Person / 构造器。/ 如果超类没有提供无参数的默认构造器,则子类就必须具备构造器/ 子类的构造器参数没有必要和超类相同,但子类构造器必须使用base关键字调用超类的某个构造器public Man(string name, int age) : base (name, age, true) /表示男人抽烟的方法public void Smork() Console.WriteLine( 0 抽了一根烟 , base.Name); /女人类,从 Person类继承public class Woman : Person名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 25 页 - - - - - - - - - / 构造器public Woman(string name, int age) : base (name, age, false) /表示女人化妆的方法public void Makeup() Console.WriteLine( 0 化妆完 o 毕, base .Name); classProgram staticvoid Main(string args) Man man = new Man(小张 , 19); /调用 Man类从Person类继承的方法man.ShowMe(); /调用 Man类自身具有的方法man.Smork(); Woman woman = new Woman(小白, 20); /调用 Woman类从Person 类继承的方法woman.ShowMe(); /调用 Woman类自身具有的方法woman.Makeup(); 继承最直接的好处是:在设计类的时候,如果存在继承关系,则可以通过继承省略大量代码的书写。继承可以将类组成宗系,更符合软件开发的思想:组织功能模块(超类),细化功能(子类) ,功能异化(子类) 。这句话可能暂时不好理解,随着对面向对象学习的深入,慢慢去理解这句话的含义。看看在软件开发中,如何定义一个基本功能类,然后不断的继承它,完成功能的细化和扩展。对于继承,语法上没有任何难点,关键要理解子类的构造器。子类必须要调用超类的某个构造器,缺省情况下, 子类调用超类的无参默认构造器,但如果超类中没有默认构造器,则必须显式说明,子类要调用超类的哪个构造器。参考89、90 行代码。所谓缺省情况,指的是无需使用base关键字显式调用超类构造器,此时子类自动调用超类中没有参数的那个构造器。C#语言 第一部分面向对象(六)变量对对象的引用很容易理解的概念,直接看代码,不多说了。using System; using System.Collections.Generic; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 25 页 - - - - - - - - - using System.Linq; using System.Text; namespace Edu.Study.OO.ReferenceRelationship public class Person protectedstring name; protectedint age; protectedbool sex; / 带有参数的构造器public Person(string name, int age, bool sex) this.Name = name; this.Age = age; this.sex = sex; public string Name get returnthis.name; set this.name = value; public int Age get return age; set age = value; public bool Sex get 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 25 页 - - - - - - - - - return sex; set sex = value; / 显示个人信息的方法public void ShowMe() Console.WriteLine( 姓名: 0 ,性别: 1 ,年龄:2 岁。, this.Name, this.Sex, this.Age); /男人类,从 Person类继承public class Man : Person public Man(string name, int age) : base (name, age, true) /表示男人抽烟的方法public void Smork() Console.WriteLine( 0 抽了一根烟 , base.Name); classProgram staticvoid Main(string args) Man man = new Man(小王 , 22); man.ShowMe(); man.Smork(); Person person = man; / 通过 ShowMe执行结果可以看到, person变量实际上就是前面实例化的Man类对象/ 从这个结果我们可以看出,无论是前面的man变量,还是 person变量,保存的都是一个实际对象的引用,对象客观存在,变量只是给这个对/ 象赋予的一个代称,一个对象可以拥有多个代称,即一个对象可以被多个变量引用,例如:/ Man man2 = man; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 25 页 - - - - - - - - - / 此时,定义的新变量 man2, 它和man变量具有相同的引用person.ShowMe(); / Person person = man 这句代码表达了一个很容易理解的说法,男人是人。这种说法隐含了这样的含义:使用超类定义的变量可以“引用”到某一个子类实例化的对象上/ 反过来呢?人是男人?这种说法显然是不通的,除非我们确定我们所说得人确实是一个男人,所以man = (Man)person; /* 这里我们应用了 C语言风格的类型转换运算,由于事先已经知道person变量确确实实是引用到Man类对象的变量,所以/ 可以将其转换为 Man类的变量/ person.Smork(); / 试着将上面这句话的注释删掉,这时候会发生一个编译错误。Smork方法无效。这里注意,虽然我们确定person变量/ 引用着 Man类的对象,但 person变量的类型依旧是 Person类,而 Person类是没有 smork方法的 */ C#语言 第一部分面向对象(七)方法重载一只狼狗无忧无虑的走在大街上,狼狗天性好斗,所以应该有一个Fight 方法。这时候他碰到了一只小狗,即Puppy 类的一个对象,此时狼狗调用Fight 方法,将这只puppy 作为参数传入,将其狠狠修理了一顿。不一会儿,它又碰到一只大狗,很凶恶的样子,此时狼狗的心里没有必胜的把握,但它依旧调用了Fight 方法,将大狗作为参数传入。不过这次,Fight 方法只是示威了一下而已,叫了几声,然后就结束了。又过了一会儿,它碰到了一大群狗,即一个狗数组,此时狼狗吓得屁滚尿流,但还是调用了Fight 方法,将狗数组作为参数传入。这次,Fight 方法执行的结果,狼狗逃之夭夭了。可见,在我们现实生活中,总是存在这样一种情况:某类对象的某种行为,因为外界条件不同(参数不同),执行的具体流程也不同。体现在编程代码中,就是方法的重载。在同一个类(或某个类和它的子类)中,一系列同名的方法就构成了“ 重载 ” ,重载的条件是:方法名相同,参数列表不同。对于子类要重载超类方法的情况,超类该方法必须为protected 或 public 类型。看代码:using System; namespace Edu.Study.OO.Overload public class Person protectedstring name; protectedint age; protectedbool sex; /带有参数的构造器public Person(string name, int age, bool sex) this.Name = name; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 25 页 - - - - - - - - - this.Age = age; this.sex = sex; public string Name get returnthis.name; set this.name = value; public int Age get return age; set age = value; public bool Sex get return sex; set sex = value; /显示个人信息的方法public void ShowMe() Console.WriteLine( 姓名: 0 ,性别: 1 ,年龄: 2 岁。, this.Name, this.Sex, this.Age); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 25 页 - - - - - - - - - public class Man : Person public Man(string name, int age) : base (name, age, true) public void Smork() Console.WriteLine( 0 抽了一根烟 , base.Name); public class Woman : Person public Woman(string name, int age) : base (name, age, false) public void Makeup() Console.WriteLine( 0 化妆完毕 , base.Name); public class Toilet /厕所进入方法,参数为Man类型public void Comming(Man man) Console.WriteLine( 0 进?了 ?男D厕T所 , man.Name); man.Smork(); /厕所进入方法,参数为Woman类型public void Comming(Woman women) Console.WriteLine( 0 进?了 ?女?厕T所 , women.Name); women.Makeup(); classProgram名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 25 页 - - - - - - - - - staticvoid Main(string args) / 实例化厕所对象Toilet wc = new Toilet(); / 实例化一个男人和一个女人Man wang = new Man(小王, 22); Woman li = new Woman(小丽, 19); / 调用厕所类的 Comming方法,分别传入 Man类型变量和 Woman类型变量wc.Comming(wang); wc.Comming(li); / 可以发现,通过方法的参数,C#编译器会自动匹配最合适的方法进行调用。/ 方法重载可以使用同一个方法名,对传入不同参数的各种调用场景进行自动适应/ 重载的要点:方法名相同,参数列表不同 熟练应用重载,虽然它并不能直接简化类的编程,但对于调用这个类的程序开发人员来说,重载则更好理解,也更直观。前面我们讲过,只要参数列表不同,一个类可以拥有多个构造器。构造器的本质还是方法,所以多个构造器实际上还是构成了方法的重载。C#语言 第一部分面向对象(八)方法的抽象和类的抽象当我们对客观事物进行分类时,常常会遇到这样一个问题:有一些类并不知道自己的某些方法具体的实施流程是什么。这样的类非常多,例如有一个Person类,其必然有一个Speak 方法,因为所有的Person都可以 Speak,但当我们设计 Person类时,却无法写出Speak 方法体内的一行代码。因为Person类太概括了,如果不明确的指出是哪一国人,我们无法得知Speak方法具体怎么发生。一个类, 具有某个行为, 但无法得知该行为的具体流程。这样的行为称为抽象行为,体现在代码中就是“ 抽象方法 ” 。好了,现在我们有一个拥有抽象方法的类,那当我们试图生成这个类的实例时,矛盾就产生了。实例一旦生成,就表明它是一个客观存在的具体事物,不可能存在尚未确定的方法。所以一旦一个类中具备抽象的方法,则这个类被称为 “ 抽象类 ” 。抽象类无法实例化对象,这是规定。抽象是面向对象语言的类得以连续继承的关键。OK ,总结一下:超类定义了两部分方法,一部分方法,超类知道其执行流程,这部分方法要么被子类直接继承,要么被子类继承后覆盖;一部分方法,超类并不知道其具体执行流程,所以超类给出定义,由知道其具体执行流程的那个子类来覆盖实现该方法。好了,我们来举个例子:using System; namespace Edu.Study.OO.Abstract /依旧创建一个人类,这次这个类是“抽象”的,abstract关键字表示抽象名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 25 页 - - - - - - - - - public abstractclassPerson private string name; private int age; private bool sex; public Person(string name, int age, bool sex) this.Name = name; this.Age = age; this.sex = sex; public bool Sex get return sex; public int Age get return age; set age = value; public string Name get return name; set name = value; /去厕所的方法(抽象),abstract关键字表示方法抽象名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 25 页 - - - - - - - - - public abstractvoid GoToilet(); public class Man : Person public Man(string name, int age) : base (name, age, true) public void Smork() Console.WriteLine( 0 抽了一支烟。 , this.Name); /去厕所的方法(实现超类抽象方法,注意要使用override关键字)public override void GoToilet() Console.WriteLine( 0 解决了燃眉之急。 , this.Name); this.Smork(); public class Woman : Person public Woman(string name, int age) : base (name, age, false) public void Makeup() Console.WriteLine( 0 化妆完毕。 , this.Name); /女人去厕所方法(实现超类抽象方法,注意要使用override关键字)public override void GoToilet() Console.WriteLine( 0 解决了燃眉之急。 , this.Name); this.Makeup(); public class Tolite名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 25 页 - - - - - - - - - /进入厕所的方法public void Comming(Person person) person.GoToilet(); classProgram staticvoi

    注意事项

    本文(2022年C#教程—最佳的入门教程 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开