类的封装、多态和继承

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:59:01
(1)设计一个表示二维平面上点的类point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x和y值的public方法。
(2)设计一个表二维平面上圆的类Circle,它继承自类point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r的public方法。
(3)设置一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
(4)建立若干个Cylinder对象,输出其轴心坐标、半径、高及其体积的值。

要求:
(1)每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
(2)子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。

#include "iostream"
using namespace std;
//(1)
class point
{ public:
point()
{ x=0;y=0}
point(int x,int y)
{ point::x=x;
point::y=y;
}
int getx()
{ return x;}
int gety()
{ return y;}
protected:
int x,y;
};
//(2)
class circle:public point
{ public:
circle()
{r=0;}
circle(int x,int y,int r):point(x,y)
{ circle::r=r; }
void setr(int m)
{ r=m;}
int getr()
{ return r; }
protected:
int r;
};
//(3)
class cylinder:public circle
{ public:
cylinder()
{h=0;}
cylinder(int x,int y,int r,int h):circle(x,y,r)
{ cylinder::h=h; }
void seth(int n)
{ h=n;}
int geth()
{ return h;}
double getv()
{ return 3.14*getr()*getr()*geth(); }
protected:
int h;
};
void main()
{ cylinder