主要参考了下面的文章,根据它来谈谈自己的看法。
参考文章: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)”了。