Многоуровневое наследование |
class Point
{
protected:
int x,y;
public:
Point ():x(50),y(50) {}
};
class ColorPoint : public Point
{
protected:
int color;
public:
ColorPoint ():Point(),color(5) {}
};
class Rectangle : public ColorPoint
{
protected:
int x1, y1;
public:
Rectangle ():ColorPoint(),x1(100),y1(100) {}
};
class RectangleFill : public Rectangle
{
protected:
int fill;
public:
RectangleFill():Rectangle(),fill(10) {}
void Show()
{
cout<<"("<<x<<","<<y<<")-("<<x1<<","<<y1<<") "<<color<<" "<<fill<<endl; //(50,50)-(100,100) 5 10
}
};
void main()
{
RectangleFill rf;
rf.Show();
_getch();
}
В данном случае класс RectangleFill является наследником класса Rectangle, а класс Rectangle является в свою очередь наследником класса ColorPoint и т.д..
Такое наследование может продолжаться бесконечно. Соответственно, конструкторы и методы могут быть переопределены, как и конструкторы классов. Причем, мы можем использовать любой класс из этого дерева отдельно.
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |