c_ppt05-面向对象编程(二)继承封装和多态.ppt

c_ppt05-面向对象编程(二)继承封装和多态.ppt

ID:48560989

大小:149.00 KB

页数:29页

时间:2020-01-23

c_ppt05-面向对象编程(二)继承封装和多态.ppt_第1页
c_ppt05-面向对象编程(二)继承封装和多态.ppt_第2页
c_ppt05-面向对象编程(二)继承封装和多态.ppt_第3页
c_ppt05-面向对象编程(二)继承封装和多态.ppt_第4页
c_ppt05-面向对象编程(二)继承封装和多态.ppt_第5页
资源描述:

《c_ppt05-面向对象编程(二)继承封装和多态.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第五讲 面向对象编程(二)继承、封装和多态4.3继承、封装和多态4.3.1继承4.3.2封装4.3.3多态4.3.4this和base关键字4.3.1类的继承继承的意思是一个类可以建立在另一个类的基础上,可以继承另一个类的属性和方法。我们把被继承的类叫做基类,通过继承产生的类叫做派生类(也可以叫做父类和子类)。继承的概念来源与现实的生活,比如汽车、轮船、火车飞机等就是继承于交通工具这个类,而汽车类中又可以派生出新的类,比如轿车、面包车等等。引入继承可以让我们重用以前写过的代码,新编写的代码可以在原来的基础上继承而来。在C#中继承的方式就是定义派生类。在C#中,所有的

2、类都是通过直接或间接地继承Object类得到的。1.派生子类定义派生类的基本形式:class派生类名字:基类名字{派生类的代码;}publicclassParent{publicParent(){......定义一个构造函数}publicvoidWriteItem(){.......定义方法}}publicclassChild:Parent{publicChild(){......派生类的构造函数}publicstaticvoidMain(){Childa=newChild();a.WriteItem();}}派生类使用基类的方法基类的构造函数先执行再执行派生类的构造

3、函数。2.域的继承、添加与隐藏1、域的继承:子类可以继承父类的所有成员。但注意虽然派生类继承了私有成员,但除定义类外,派生类不能直接访问基类的所有私有成员。2、域的添加:在子类定义中加上新的域变量,就可以使得子类具有比父类多的属性。如:classStudent:Person{stringschool;intscore;}子类比父类多了两个成员:school、score。3、域的隐藏:子类重新定义一个从父类中继承的域变量,但通常会被认为是一个糟糕的设计。classA{publicinta;}classB:A{newpublicinta;}使用new修饰符来隐藏父类的同名

4、成员a。下面是一个演示隐藏域的例子,注意由于要在派生类B中调用父类的构造函数,所以A的构造方法必须用public修饰。classA{publicinta;publicA(){a=1;}}classB:A{newpublicdoublea;B(){a=1.5;}staticvoidMain(){Bb1=newB();Console.WriteLine(b1.a);Console.ReadLine();}}3.方法的继承、添加与覆盖1、方法的继承:子类可以继承父类的所有方法。2、方法的添加:在子类定义中加上新的方法,以针对子类实现相应的功能。3、方法的覆盖:子类定义与父类

5、同名的方法。(多态之一)(1)定义同名但参数列表不同的方法,称为方法的重载;(2)定义同名且参数列表也相同的方法,称为新增,这时应该在同名方法前面用new修饰符;(3)定义同名且参数列表也相同的方法,并且父类中的方法用abstract/virtual进行修饰,子类中的方法用override进行了修饰,称为虚方法的覆盖。方法重载举例classparent{publicintadd(intx,inty){return(x+y);}}classchild:parent{publicintadd(intx,inty,intz){return(x+y+z);}publicsta

6、ticvoidMain(){childc1=newchild();Console.WriteLine(c1.add(1,2,3));Console.WriteLine(c1.add(4,5));Console.ReadLine();}}分别使用了自己和父类的方法。方法隐藏举例classparent{publicintadd(intx,inty){return(x+y);}classchild:parent{newpublicintadd(intx,inty){return(x+y+10);}publicstaticvoidMain(){childc1=newchild

7、();c1.add(4,5);}使用了自己的方法。虚方法覆盖举例usingSystem;classone{publicvirtualvoidy(){Console.WriteLine("one_y");}}classtwo:one{publicoverridevoidy()//重写同名方法{Console.WriteLine("two_y");}}classtest{publicstaticvoidMain(){twotwo1=newtwo();oneone1=two1;oneone2=newone();//m1指向m2实例two1.y();one1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。