JavaScript的上下文中的封装是什么?在mozilla网站(link)中阅读此声明后我感到困惑:
封装
在前面的示例中,Student不需要知道Person的方式 class的walk()方法已实现,但仍可使用该方法; 除非,Student类不需要显式定义该方法 我们想改变它。这称为封装,每个封装 class继承其父方法,只需要定义 它希望改变的事情。
我已经将封装理解为隐藏类成员,但在Mozilla网站上的示例中,它似乎是简单的继承。
答案 0 :(得分:1)
这意味着您无需构建您正在使用它们的工具。
当你可以抽象出类似的东西时,它会使编程压力减轻很多。
您是否在JavaScript中使用过alert()
方法?
如果您不得不关心alert
与浏览器的通信方式,以及浏览器如何与您的显示器以及介于两者之间的所有层进行通信,我确信您会感到有些不知所措。
您不必担心用于渲染字体的贝塞尔曲线或如何实现ok
按钮,或者使alert
工作的所有其他代码。您所知道的是,您可以在JavaScript中编写alert("txt")
,并且会出现一个对话框。
答案 1 :(得分:0)
walk
已在Person
中实施。 Student
不允许改变它的实现方式,它只能完全覆盖该函数。
您可以设计一种编程语言,允许您覆盖父函数的部分而不是整个函数。这种编程语言具有继承性,但不具有封装性。
当然,如果一个孩子覆盖了父函数的一部分,这意味着子实现和父实现是耦合的。这通常被认为是不好的做法。这就是为什么大多数语言都强制执行封装,但这不是你绝对需要的东西。
也许一个很好的类比是一个插件机制。您可以用不同的方式编写插件:使用某些事件挂钩或使用聪明的继承,但您也可以执行内联代码替换。现在在你认为这是荒谬的之前,流行的论坛软件phpBB的旧版本实际上做到了这一点。你可以想象如果你安装了两个可能会干扰的插件会发生什么,不知道会发生什么!