- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
常用类思政目标:?理解课程中对常用类的讲解,树立理论联系实际的意识?通过面向对象程序设计方法的学习,提高学生的抽象思维能力技能要求:?掌握面向对象程序设计的基本概念?了解常用类概念及用法?理解并掌握抽象类的用法?掌握接口与抽象类的关系?了解匿名类实践目标:?根据示例,对所学的概念进行验证?熟练应用面向对象方法实现编程设计第9章
抽象类接口匿名类结构Object类
抽象类01PART
抽象类的概念抽象类是只表达一个抽象的概念,是作为其派生类的一个基类的类。抽象类使用abstract修饰,抽象类不能被实例化,即抽象类没有实例存在。抽象方法抽象方法是只有方法声明但没有方法实现的一个空方法,使用abstract修饰。抽象的方法隐式为虚方法,必须被覆盖,即若某个类继承了一个抽象类,则该类一定要实现基类中的所有抽象方法。另外,抽象方法必须声明在抽象类中。实例设计3个类:star(明星)类、singer(歌星)类、filmStar(影星)类。其中,star类可以设计为singer类和filmStar类的基类。给这些类都设计一个用于介绍自己的方法Introduce(),由于star类的Introduce()方法在singer类和filmStar类并不是很适用,此时,可以在基类star中将该方法声明为抽象方法,star类自然也要声明为抽象类,然后在singer类和filmStar类中对Introduce()方法进行完善(重写)。抽象类
从执行结果可以知道,子类实现了基类中的抽象方法,能够顺利输出(1)不确定某个类的方法,但知道其实现的细节是由子类决定,那么就可以把它定义为abstract。(2)抽象方法必须声明在抽象类中,但抽象类不一定包含抽象方法。(3)声明抽象方法时,不能使用virtual、static、private修饰符(4)抽象类不仅可以包含抽象方法,还可以包含虚方法。(5)抽象类中还可以有抽象属性,实例如下1423结果注意事项抽象类
接口02PART
接口的概念接口,可理解为抽象类的一种特例。在接口中,所有的方法都必须是抽象的,而且接口没有实现代码,只有声明语句。接口的作用通过接口,可以定义类的原形,不用定义类的实现。抽象类中要求其子类必须实现其抽象方法,接口则要求实现该接口的类,必须实现接口内声明的所有成员(也可以理解为实现该接口的类都必须具有相同的形式),因此,接口被看作是类和类之间的协议。在C#中,虽然一个类只能继承一个父类,但可以实现多个接口,借助这个特性,可以间接实现多重继承。接口
接口声明接口成员时,接口成员不允许有任何修饰符,如public、private等。接口的声明语法声明接口一个类实现接口的形式声明一个接口,接口包含一个属性和一个方法,其中方法有两个重载版本重载定义一个singer类实现该接口接口
定义一个singer类实现该接口接口解析由于已经在接口中定义了属性和方法,故在此一定要实现,当然也可继续在该类中添加需要的成员。
匿名类03PART
引用由于匿名类型没有名字,所以若想引用它,就需要借助隐式类型变量此处所得到得匿名类型有两个属性,分别为Max和Min,值分别为100和0。可以使用myOb.Max,myOb.Min来访问这两个属性引用如下在使用匿名类型的过程中,需要注意以下六个问题:(1)程序编写人员不能决定匿名类型的名称。(2)匿名类型是隐式封闭的。(3)匿名类型的字段和属性总是只读的。(4)匿名类型继承自System.Object。(5)匿名类型的实体创建只能使用默认的构造函数,不能自定义。(6)匿名类型中不支持事件、自定义方法、自定义操作符以及自定义重写。匿名类的概念没有名字的类就是匿名类型创建匿名类解读其中,name1、name2最终成为该匿名类型的属性,value1、value2成为相应的属性值。表面上,匿名类型没有名称,实则编译器会在内部给它分配一个名称,故匿名类型仍遵从C#的强类型检查规则。匿名类
结构04PART
02结构与类的不同之处结构属于值类型,声明它使用的是关键字struct;而类属于引用类型,声明它使用的是关键字class注意问题(1)结构不能声明无参数构造函数,只能自行定义有参构造函数。(2)与类一样,结构的成员有字段、属性、方法、构造函数、事件等,但结构不能定义析构函数。(3)结构不能继承其他类或者结构,即结构不能作为类的的基础类型,但是结构可以实现接口。所有结构的直接父类就是System.ValueType。(4)结构创建对象可以像类实例化一样使用new,当然也可以不使用new。使用new时,会调用指定的构造函数完成一些初始化工作;不使用ne
文档评论(0)