类的封装与继承——简例
题目来源于牛客网
题目描述
KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点x,y, 由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。
输入描述:
输入三行, 第一行为矩形的长和宽, 第二行为圆的半径, 第三行为正方形的边长。
输出描述:
三行,分别是矩形、圆、正方形的面积。
示例1
输入
7 8
10 5
输出
56
314
25
代码如下:
#include <iostream>
using namespace std;
class shape
{
private:
int x,y;
};
class Rectangle:public shape
{
public:
double GetArea(){return length*width;}
int length;
int width;
} p;
class Circle:public shape
{
public:
double GetArea() {return 3.14*r*r;}
int r;
};
class Square:public Rectangle
{
public:
double GetArea() {return x*x;}
int x;
};
int main()
{
Rectangle Length,Width;
Circle R;
Square X;
cin>>p.length>>p.width>>R.r>>X.x;
cout<<p.GetArea()<<endl;
cout<<R.GetArea()<<endl;
cout<<X.GetArea()<<endl;
return 0;
}