欢迎来到天天文库
浏览记录
ID:34647361
大小:705.71 KB
页数:64页
时间:2019-03-08
《3-2.c++面向对象程序设计—重载、继承、多态和聚合new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序设计实习程序设计实习程序设计实习INFO130048INFO130048INFO13004833--2.C++2.C++面向对象程序设计面向对象程序设计——重载、继承、多态和聚合重载、继承、多态和聚合复旦大学计算机科学与工程系复旦大学计算机科学与工程系彭鑫彭鑫pengxin@fudan.edu.cnpengxin@fudan.edu.cn内容摘要内容摘要•方法重载•类的继承•对象引用和拷贝构造函数•虚函数和多态性•类的聚集复旦大学计算机科学与工程系本科生课程程序设计实习2/81内容摘要内容摘要••方法重载方法重载•类的继承•对象引用和拷贝构造函数•虚函数和多态性•类的聚集
2、复旦大学计算机科学与工程系本科生课程程序设计实习3/81方法重载方法重载•在C++程序中,只要函数在形参个数或形参类型顺序可以区分时,函数可以同名•这种允许函数同名的机制称为方法重载–编绎器通过检查实参的个数、实参类型和顺序自动确定一个合适的函数–通常用于:•有相同逻辑意义但对不同数据类型进行操作的情况,如整数组元素求和同实数组元素求和的函数都用add命名•用不同的方式完成类似的操作,例如员工类的增加工资方法addSalary可以提供按比例和按金额两种操作方式复旦大学计算机科学与工程系本科生课程程序设计实习4/81注意注意:方法重载的规定:方法重载的规定•方法参数个数不同•或
3、者对应的方法参数类型不同•形参的名称并不能作为重载方法的区分条件复旦大学计算机科学与工程系本科生课程程序设计实习5/81特殊的方法重载:构造器重载特殊的方法重载:构造器重载参数个数不同复旦大学计算机科学与工程系本科生课程程序设计实习6/81参数类型不同的方法重载参数类型不同的方法重载参数类型不同复旦大学计算机科学与工程系本科生课程程序设计实习7/81错误的方法重载错误的方法重载形参名称并不能作为重载的区分复旦大学计算机科学与工程系本科生课程程序设计实习8/81内容摘要内容摘要•方法重载••类的继承类的继承•对象引用和拷贝构造函数•虚函数和多态性•类的聚集复旦大学计算机科学与工
4、程系本科生课程程序设计实习9/81继承继承--11•为了认识复杂的事物的另一个重要的手段是将复杂事物分层来认识。–从一般到特殊将复杂事物分成多个层次,从最高层的最普通出发,逐层深入到更具体,并且低层包含有高层的特征•面向对象程序设计语言中,将分层抽象技术称为继承复旦大学计算机科学与工程系本科生课程程序设计实习10/81继承继承--22•将继承应用于类的设计中,在定义新类B时,能利用已有类A定义新类B,新类B可以另外添加别的行为,或重新定义类A的某些行为–称采用继承定义的新类B为被继承类A的子类,类A称为类B的父类–子类B对父类A的某些行为重新定义称为对这些重新定义的行为的重载
5、复旦大学计算机科学与工程系本科生课程程序设计实习11/81继承实例继承实例多边形顶点数顶点坐标计算面积旋转矩形长宽对角线计算面积计算对角线复旦大学计算机科学与工程系本科生课程程序设计实习12/81多重继承实例多重继承实例交通工具飞行器汽车船轿车货车一般-特殊关系复旦大学计算机科学与工程系本科生课程程序设计实习13/81如果一个子类只有唯一一个父类(基类),这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。C++允许多重继承水上交通工具陆上交通工具水陆两栖交通工具多重继承复旦大学计算机科学与工程系本科生课程程序设计实习14/81C++C++中继承的写法中
6、继承的写法classC:访问控制A,访问控制B{…};表示类C从A和B继承而来,例如classStudent:publicPeople{…};复旦大学计算机科学与工程系本科生课程程序设计实习15/81继承例程继承例程11——PersonPerson类类复旦大学计算机科学与工程系本科生课程程序设计实习16/81继承例程继承例程22——StudentStudent类类在父类基础上新增的属性完成父类初始化逻辑复旦大学计算机科学与工程系本科生课程程序设计实习17/81继承例程继承例程33——错误的错误的StudentStudent类类name是父类的private属性!!复旦大学计算
7、机科学与工程系本科生课程程序设计实习18/81继承例程继承例程44——运行结果运行结果结论:1.子类对象创建时将先调用父类构造器完成父类逻辑中的初始化操作2.子类构造器定义时必须以适当的形式满足父类的初始化要求(除非父类拥有无参数的缺省构造器)复旦大学计算机科学与工程系本科生课程程序设计实习19/81继承例程继承例程55——添加析构函数后添加析构函数后结论:子类对象销毁时将先调用子类的析构函数再调用父类的析构函数(一种栈式顺序:父类构造器最先被调用,析构函数最后被调用)复旦大学计算机科学与工程系本科生课
此文档下载收益归作者所有