面向对象实验三( 组合、继承与多态性)
来源:互联网 发布:java开发有哪些方向 编辑:程序博客网 时间:2024/06/18 15:55
一、实验目的
1、掌握继承机制。
2、掌握虚函数。
3、理解并掌握虚基类。
二、实验内容
2、虚基类为Shape,从Shape派生出矩形类(左上角点、宽、高)、椭圆类(横轴、纵轴)。给出各个类的构造函数,成员初始化,在基类中定义虚函数GetArea()(计算面积),在派生类中改写。写出该程序的实现。
1、掌握继承机制。
2、掌握虚函数。
3、理解并掌握虚基类。
二、实验内容
1、编写一个程序:设计一个汽车类,数据成员有轮子个数、车重。小车类是汽车类的私有派生类,包含载客量。卡车类是汽车类的私有派生类,包含载客数和载重量。每个类都有数据的输出方法。
#include<iostream>using namespace std;//汽车类class car{public: int wheel;//轮子个数 float weight;//车重 car(int a=0,float b=0); void carprint();//汽车类的输出函数};//小车类class dolly:private car{private: int busload;//载客量public: dolly(int c=24):car(4,2) { busload=c; } void dollyprint();//小车类的输出函数};//卡车类class truck:private car{private: int busload;//载客量 float upweight;//载重量public: truck(int c=24,float d=30):car(4,2) { busload=c; upweight=30; } void truckprint();//卡车类的输出函数};int main(){ car c1(4,2); c1.carprint(); dolly c2(24); c2.dollyprint(); truck c3(24,3); c3.truckprint(); return 0;}//汽车类的构造函数car::car(int a,float b){ wheel=a; weight=b;}//汽车类的输出函数void car::carprint(){ cout<<"汽车类:"<<endl; cout<<"轮子个数为:"<<wheel<<"个"<<endl; cout<<"车重为:"<<weight<<"吨"<<endl; cout<<endl<<endl;}//小车类的输出函数void dolly::dollyprint(){ cout<<"小车类:"<<endl; cout<<"轮子个数为:"<<wheel<<"个"<<endl; cout<<"车重为:"<<weight<<"吨"<<endl; cout<<"载客量为:"<<busload<<"位"<<endl; cout<<endl<<endl;}//卡车类的输出函数void truck::truckprint(){ cout<<"卡车类:"<<endl; cout<<"轮子个数为:"<<wheel<<"个"<<endl; cout<<"车重为:"<<weight<<"吨"<<endl; cout<<"载客量为:"<<busload<<"位"<<endl; cout<<"载重量为:"<<busload<<"吨"<<endl;}
2、虚基类为Shape,从Shape派生出矩形类(左上角点、宽、高)、椭圆类(横轴、纵轴)。给出各个类的构造函数,成员初始化,在基类中定义虚函数GetArea()(计算面积),在派生类中改写。写出该程序的实现。
#include<iostream>#define PI 3.14using namespace std;//形状类class Shape{public: int x,y; int wide,high; Shape(){}; virtual void GetArea()=0;//虚函数GetArea()(计算面积) virtual ~Shape(){};};//矩形类class rectangle:public Shape{private: int x,y; int wide,high;public: rectangle(int a,int b,int c,int d);//矩形类的构造函数 void GetArea();};//椭圆类class ellipse:public Shape{private: int x,y; int wide,high;public: ellipse(int a,int b,int c,int d);//椭圆类的构造函数 void GetArea();};int main(){ rectangle ob1(3,4,6,8); ob1.GetArea(); ellipse ob2(0,0,2,2); ob2.GetArea(); return 0;}//矩形类的构造函数rectangle::rectangle(int a,int b,int c,int d){ x=a; y=b; wide=c; high=d;}//椭圆类的构造函数ellipse::ellipse(int a,int b,int c,int d){ x=a; y=b; wide=c; high=d;}void rectangle::GetArea(){ cout<<"矩形类"<<endl; cout<<"左上角点的坐标为:"<<'('<<x<<','<<y<<')'<<endl; cout<<"矩形的宽为:"<<wide<<endl; cout<<"矩形的高为:"<<high<<endl; cout<<"矩形的面积为:"<<wide*high<<endl<<endl;}void ellipse::GetArea(){ float area; area=PI*wide*high/4; cout<<"椭圆类"<<endl; cout<<"椭圆的横轴为:"<<wide<<endl; cout<<"椭圆的长轴为:"<<high<<endl; cout<<"椭圆的面积为:"<<area<<endl;}
- 面向对象实验三( 组合、继承与多态性)
- 面向对象之继承与组合
- 面向对象----继承,组合
- 面向对象特征三-多态性
- 面向对象(三):继承
- 面向对象方法的特性:(抽象,封装,继承,多态性)
- 面向对象(11)(继承组合)
- ]面向对象(11)继承(组合)
- 面向对象的继承性和多态性
- 面向对象——封装、继承、多态性
- 面向对象(一)(封装,继承,多态,继承与组合,初始化块)
- Python 面向对象编程(三)继承与多态
- Python 面向对象编程(三)继承与多态
- Java面向对象继承与组合的问题
- 《JAVA面向对象编程》读书笔记-继承与组合
- 关于面向对象设计中继承与组合的选择
- Python 进阶_OOP 面向对象编程_组合与继承
- 面向对象编程(OOP)中组合与继承的区别
- 计算当年第几天
- mybaitis 获取插入时自增的键值
- 创建一门新的编程语言-Flex&Bison教程-(3)-更实用的小计算器
- Win32多线程之主线程
- Irrlicht学习之光照的研究
- 面向对象实验三( 组合、继承与多态性)
- printk 使用方法
- SQLite适用的范围
- 常见的Java问题排查方法
- printf("good bye my last regional\n"); //ACM退役贴
- 使用Jquery进行select的级联操作
- 面向对象实验四(输入输出流)
- Mac&iOS Socket编程
- 由运放组成的V-I、I-V转换电路