c++ 三种继承(public protect private)

来源:互联网 发布:sketch中文破解版 mac 编辑:程序博客网 时间:2024/05/16 02:03

主要参考了下面的文章,根据它来谈谈自己的看法。

参考文章:http://blog.sina.com.cn/s/blog_60cc33d70100xylq.html

先贴张图:

1. public继承

    从语义角度上来说,public继承是一种接口继承(可以理解为子类对象可以调用父类的接口,也就有可能实现多态了)

  从语法角度上来说,public继承后,关系见上图。很明显父类public成员在子类中仍然是public,所以子类对象可以调用父类的接口

 

2. protected继承

  从语义角度上来说,protected继承是一种实现继承

   从语法角度上来说,protected继承后,父类public和protected成员都变成子类的protected成员了,也就是说子类对象无法调用父类的接口,只能将父类的函数当作子类的内部实现,当然也就不符合“Liskov替换原则(LSP”了。

 

3. private继承

  从语义角度上来说,private继承是一种实现继承

  从语法角度上来说,private继承后,父类public和protected成员都变成子类的private了,它比protected继承更严格。也就说这些父类的成员只能被继承一次,再继续继承,父类的成员就不可见了。private继承更不符合“Liskov替换原则(LSP”了。