这似乎是一个愚蠢的问题,但我只是如此好奇,并希望在谈论这个问题时使用正确的术语。在这里找不到类似的问题所以我决定创建一个新问题。
我们是否应该提及“替换实施”覆盖或覆盖? 这是语言特定的吗?
答案 0 :(得分:122)
如果您将一个实现完全替换为另一个实现,则“覆盖”或更常见的是“替换”。如果您在某些特定情况下将实现替换为另一个实现,则“覆盖”。
要“覆盖”,就要把其他东西放在原处,摧毁被覆盖的东西。要“覆盖”,某些事情会导致其他操作而不是它而不会伤害或更改被覆盖的内容。
答案 1 :(得分:29)
常用字是Override,它不是特定于语言的,因为您也可以从维基百科中读取:http://en.wikipedia.org/wiki/Method_overriding
答案 2 :(得分:11)
根据现实世界的例子,这是我对覆盖和覆盖的差异的理解:
假设您有一家汽车制造公司。您的客户很有名,也很满意,因为他们始终信任您并购买您的产品。
为了继续您的业务,您基本上有2个选项:
所有的事情都来了,你知道你走的是正确的道路。因此,您不仅要保留以前的型号,还要不断增强它们。虽然怎么样?可能通过为现有模型添加一些新功能!现在,新型号具有 PLUS 所有新增功能的功能。
你知道你经历的方式有点不对劲!多么糟糕的方法!!你很快注意到公司应该改变整个技术,否则它将会经历严峻的形势(如破产等......)
毕竟,在编程方面,第一种方法是指覆盖,因为您在保留汽车之前的行为的同时,为您的汽车添加了一些新行为,而第二种方法是指覆盖,因为您想要完全改变行为,并从头开始开发新功能。
希望这可以帮助你。
答案 3 :(得分:7)
两者都是通用术语
Override
是预防某些先前的行动或决定,另一方面Overwrite
指的是某些事情是先前写过的内容。
简单来说,
重写行动和决定。
信息被覆盖。
答案 4 :(得分:1)
我认为,如果给出一些背景信息,那么将非常容易理解和区分。
摘自 APUE §10.17:
POSIX.1还指定
abort
覆盖阻塞或忽略 信号(SIGABRT
)的数量。
来自Bing词典:
优先于某人:利用您的权力拒绝某人的决定,命令, 等
此处覆盖表示它被其较高的权限“忽略”了某些内容。
abort
不会替换过程的信号掩码,它只是以更高的权限“忽略”约束。
所以我认为 override 和 overwrite 完全是两个不同的词。 覆盖应该是替换旧内容的词。