- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
15继承与多态类的关系基类的成员基类成员隐藏函数成员的重载多态虚函数抽象类密闭类
21类的关系类之间的关系具体化一般化。继承来表示类之间的关系。基类(父类)派生类(子类)C#规定每个类最多只能有一个直接基类。或者说只能使用单继承。(C++允许使用多继承)
32基类的成员
派生类继承了基类中公有的和保护的成员
语法:publicclassControl { privateinttop; privateintleft; protectedintcolor; publicvoidDrawWindow(){ Console.WriteLine(“ControlDrawingWindow); } }
4子类内部访问:publicclassListBox:Control{publicvoidcallparent(){top=100;//不可访问私有的Control.top,color=100;//可以访问基类的保护的或者公有的数据成员。DrawWindow();//或者函数成员。}}
5外部访问:classTester {staticvoidMain(string[]args) { ListBoxlb=newListBox(); lb.color=10;////不可访问保护的成员 lb.callparent(); lb.DrawWindow();//只能访问公有的成员 } }
63基类成员隐藏子类中如果定义了与它从基类所继承得到的成员(public或者protected)完全相同的成员。则子类会隐藏这些成员:数据成员:基类的某public或者protected某类型的数据成员i,被子类所继承,子类再定义任意类型的数据成员i时;函数成员:基类的某public或者protected返回某类型的参数为P,名字为f的函数成员,被子类所继承,子类再定义返回任意类型参数为P名字为f的函数成员时;所谓隐藏,是指在子类中通过名字来访问这些成员时,访问的是子类的成员,而非基类的。
7 publicclassListBox:Control {publicfloatcolor;//隐藏基类的intcolor //以上会出现编译器警告。加上new后会消除警告。publicnewfloatcolor;或newpublicfloatcolor;publicintDrawWindow()//隐藏了基类的DrawWindow也要加new {Console.WriteLine(“ListBoxDrawingWindow); return1;} publicvoidcallparent() {color=100;DrawWindow();//基类成员被隐藏,此时访问的是子类成员。base.color=100;base.DrawWindow();//可以这样访问基类的保护的或者公有的成员。 } }
8在外部通过子类访问这些同名的成员时,根据其可访问限制级别确定可访问的成员。如果基类和子类的成员都可以访问,则只能访问到子类的。(不能使用base去访问基类的)C++中有类似的处理。但在外部可以通过子类访问到基类被隐藏的成员。语法:子类指针-基类名::成员名”通过基类当然只能访问到基类的成员。
94函数成员的重载(overload)C++支持函数重载:在某作用域内出现多个同名的函数。C#支持函数重载(overload):在一个类的内部出现的函数名字相同,但是参数不同(个数,或者数据类型)的函数。这种函数的调用可以根据参数的不同予以区分
10publicclassListBox:Control {publicfloatcolor; publicintDrawWindow(intx,inty) {Console.WriteLine(ListBoxDrawingWindowat{0},{1},x,y); return1;} publicintDrawWindow() {Console.WriteLine(ListBoxDrawingWindow); return1;} publicvoidcallparent() { DrawWindow(); DrawWind
文档评论(0)