例子:
测试代码:
- #include <iostream>
- using namespace std;
- //书类Book
- class Book
- {
- private:
- int width;
- int height;
- public:
- virtual void madeByWood()
- {
- cout<<"I'm made by wood!";
- }
- virtual void setI(int w,int h)
- {
- width=w;
- height=h;
- }
- virtual int getW()
- {
- return width;
- }
- virtual int getH()
- {
- return height;
- }
- };
- //电子书类E_book
- class E_book:public Book
- {
- public:
- void madeByWood()
- {
- cout<<"I'm not made by wood!";
- }
- void setI(int w,int h)
- {
- Book::setI(0,0);
- }
- int getW()
- {
- return Book::getW();
- }
- int getH()
- {
- return Book::getH();
- }
- };
- //测试类TextBook
- class TextBook
- {
- public:
- void caleArea(Book &book)
- {
- try
- {
- if(book.getW()==0&&book.getH()==0)
- throw 0;
- int area=book.getW()*book.getH();
- cout<<"书的面积为:"<<area<<endl;
- }
- catch(int)
- {
- cout<<"An error occured!"<<endl;
- }
- }
- };
- int main()
- {
- Book b;
- b.setI(8,12);
- E_book e;
- e.setI(0,0);
- TextBook t;
- t.caleArea(b);
- t.caleArea(e);
- return 0;
- }
运行结果:
里氏替换原则: