覆盖或覆盖


142

这似乎是一个愚蠢的问题,但是我很好奇,想在谈论这个问题时使用正确的术语。在这里找不到类似的问题,因此我决定创建一个新的问题。

我们应该引用覆盖还是覆盖“替换实现”?它是特定于语言的吗?


没有任何上下文这个问题过于宽泛
parapura拉库玛

7
我参与过的每本书和每本语言中,它都被压倒了
Joe

1
我知道这是一个广阔的背景,但这恰恰是我在编程的非常一般的背景下要问的意思。从答复看来,“改写”是常用的词,尽管“改写”也有其特定的用法。
肯特·阮

在English.SE中存在更多涉及的讨论:english.stackexchange.com/questions/88400/…

解释[这里] [1]可能有用,尽管它与术语[1]无关:english.stackexchange.com/questions/88400/…–
一个人

Answers:



155

如果您要用另一个实现完全替换一个实现,那么它就是“ 覆盖 ”或更常见的是“ 替换 ”。如果在某些特定情况下要用另一个实现替换它,那就是“ 重写 ”。

覆盖 ”某物就是将其他东西放到原处,破坏被覆盖的东西。“ 覆盖 ”某事物是在不损害或更改被覆盖的事物的情况下使其他事物代替它运行。


3
我不同意。我相信“覆盖”一词总是可以用来表示您正在替换一个实现。多久或以何种方式都无关紧要。
布莱恩·罗杰斯

我从未听说过使用这种方式,但是使用这种方式似乎也没有错。
大卫·史瓦兹

43
在dictionary.com上进行快速搜索可以确认: 覆盖 -通过在其位置输入新数据来销毁(数据)或(文件中的)数据。 覆盖 -使用自己的权限拒绝或取消(决策,视图等)
allicarn 2012年

15

就实际示例而言,这是我对“ 覆盖”和“ 覆盖”的区别的理解:

假设您有一家汽车制造公司。因为您的客户总是信任您并购买您的产品,所以您对他们出名并感到满意。

要开展业务,基本上有两种选择:

  1. 万事俱备,您就会知道自己走对了道路。因此,您不仅要保留以前的模型,还要继续对其进行增强。虽然,怎么会呢?可能是通过向现有模型中添加一些新功能!现在,新车型具备的所有功能PLUS新增强功能。

  2. 您知道您经历的方式有些错误!多么可怕的方法!您很快就会注意到公司应该更改整个技术,否则它将面临严峻的形势(例如破产等等)。

毕竟,就编程而言,第一种方法是覆盖,因为您在保留汽车先前行为的同时向其添加了一些新的行为,而第二种方法是覆盖,因为您要更改行为完全,并从头开始开发新功能。

希望这可以帮助你。


13

两者都是通用术语, Override是防止某些先前的动作或决定,另一方面,Overwrite是指某些内容是在先前编写的内容之上编写的。

简单来说

动作和决定被覆盖。

信息被覆盖。


2

我认为,如果给出一些背景,将会非常容易理解和区分。

APUE §10.17:

POSIX.1还指定abort覆盖SIGABRT该进程对signal()的阻塞或忽略。

从必应词典:

超越某人:使用您的权力拒绝某人的决定,命令等。

此处的覆盖表示它通过其较高的权限“忽略”某些内容。 abort不会替换过程的信号掩码,它只是“忽略”具有较高权限的约束。

所以我认为覆盖覆盖完全是两个不同的词。覆盖应该是替换旧内容的词。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.