C++自主学习日志19
类的继承
继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。之前接触的复用都是函数复用,继承是类设计层次的复用。
#include <iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
const double PI=3.14;
class Shape //定义一个父类Shape
{
protected:
double X,Y; //父类里定义了double类型的X,Y;
public:
Shape():X(),Y(){}
};
class Rectangle:public Shape //定义子类Rectangle继承父类Shape
{
protected:
double L,W; //在父类X,Y的基础上定义L,W;
public:
Rectangle(double l,double w){L=l;W=w;}
double GetArea(){return L*W;} //子类定义一个函数方法求面积并带有返回值‘’
};
class Circle:public Shape //定义子类Circle继承父类Shape
{
protected:
double R; ////在父类X,Y的基础上定义R;
public:
Circle(double r){R=r;}
double GetArea(){return R*R*3.14;}
};
class Square:public Rectangle //定义子类Square继承父类Rectangle
{
protected:
double T; //在父类X,Y,L,W的基础上定义T;
public:
Square(double l,double w,double t):Rectangle(l,w),T(t){}方法
double GetArea(){return T*T;}
};
int main()
{
double l,w,r,t;
cin>>l>>w;
cin>>r;
cin>>t;
Rectangle R(l,w);
Circle C(r);
Square S(l,w,t);
cout<<R.GetArea()<<endl;
cout<<C.GetArea()<<endl;
cout<<fixed<<setprecision(0)<<S.GetArea()<<endl;
}