首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >继承是否会破坏C++中的封装

继承是否会破坏C++中的封装
EN

Stack Overflow用户
提问于 2012-01-25 01:51:33
回答 2查看 1.2K关注 0票数 3

我读到(Scott Myers)说继承破坏了封装。当数据/内部方法是私有的(不受保护的)时,是否破坏了封装?

例如:

代码语言:javascript
运行
AI代码解释
复制
class Vehicle
{
  int color;

public:
  void set_color();
  int get_color();
}


class Car: public Vehicle
{
public:
  void change_tires();
}

我可以在不破坏汽车的情况下改变汽车的内部结构,对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 02:29:22

像“继承中断封装”这样的短语经常被断章取义。

这句话指的是这样一个事实:继承的虚拟接口现在没有封装。实际上,继承意味着某些隐藏的东西现在被暴露了。像protected成员和virtual private成员这样的东西都可以通过派生类来使用。

virtual private成员仍处于隐藏状态。

票数 2
EN

Stack Overflow用户

发布于 2012-01-25 02:20:03

好吧,我不知道Scott Myers说了什么,但是不管怎样,通过您指定的方式,car方法只能访问Vehicle公共方法和属性,就像您创建Vehicle对象时一样(没有受保护的方法和属性),所以只有在基类没有正确封装的情况下,才不会破坏封装。您只能使用set_color(...)更改汽车的颜色方法,因为int color是私有的(如果未指定,类属性和函数就是私有的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8996960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档