欢迎来到天天文库
浏览记录
ID:38297925
大小:295.41 KB
页数:22页
时间:2019-06-08
《面向对象编程二继承封装和多态》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五讲面向对象编程(二)继承、封装和多态4.3继承、封装和多态4.3.1继承4.3.2封装4.3.3多态4.3.4this和base关键字4.3.1类的继承继承的意思是一个类可以建立在另一个类的基础上,可以继承另一个类的属性和方法。我们把被继承的类叫做基类,通过继承产生的类叫做派生类(也可以叫做父类和子类)。继承的概念来源与现实的生活,比如汽车、轮船、火车飞机等就是继承于交通工具这个类,而汽车类中又可以派生出新的类,比如轿车、面包车等等。引入继承可以让我们重用以前写过的代码,新编写的代码可以在原来的基础上继承而来。在C#中继承的方式就是定义
2、派生类。在C#中,所有的类都是通过直接或间接地继承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修饰符来隐藏父类的同名成员a。3.方法的继承、添加与覆盖1、方法的
4、继承:子类可以继承父类的所有方法。2、方法的添加:在子类定义中加上新的方法,以针对子类实现相应的功能。比如可以在Student类中定义分数的判断方法。3、方法的覆盖:子类定义与父类同名的方法。(多态之一)(1)定义同名但参数列表不同的方法,称为方法的重载;(2)定义同名且参数列表也相同的方法,称为新增,这时应该在同名方法前面用new修饰符;(3)定义同名且参数列表也相同的方法,并且父类中的方法用abstract/virtual进行修饰,子类中的方法用override进行了修饰,称为虚方法的覆盖。方法重载举例classparent{publici
5、ntadd(intx,inty){return(x+y);}classchild:parent{publicintadd(intx,inty,intz){return(x+y+z);}publicstaticvoidMain(){childc1=newchild();c1.add(1,2,3);c1.add(4,5);}分别使用了自己和父类的方法。方法隐藏举例classparent{publicintadd(intx,inty){return(x+y);}classchild:parent{newpublicintadd(intx,inty){
6、return(x+y+10);}publicstaticvoidMain(){childc1=newchild();c1.add(4,5);}使用了自己的方法。虚方法覆盖举例Classone{publicvoidx(){Console.WriteLine(“one_x”);}publicvirtualvoidy(){Console.WriteLine(“one_y”);}}Classtwo:one{newpublicvoidx()//隐藏父类中的同名方法{Console.WriteLine(“two_x”);}publicoverridevoi
7、dy()//重写同名方法{Console.WriteLine(“two_y”);}Classtest{publicstaticvoidMain(){twom2=newm2();onem1=m2;//m1指向m2实例m1.x();m2.x();m1.y();m2.y();}}结果:one_xtwo_xtwo_ytwo_y4.3.2类的封装类的封装改变了用户传统的使用数据和代码的方式,它将方法和数据包含在一起构成一个独立的单元,可以通过设定单元内各个成员的的特性来控制对成员的访问。比如将一个字段定义为private,就可以防止外界直接访问这个字段。
8、封装一个类由两种做法:1)为一个私有类定义公共读方法和写方法;2)使用属性,用set和get访问器。publicclassStudent{privat
此文档下载收益归作者所有