240

Should we refer to "replacing an implementation" as overwriting or overriding? Is it language-specific?

6
  • Without any context this question is too broad Commented Dec 28, 2011 at 3:34
  • 7
    It's been overriding in every book and language I've been involved in.
    – Joe
    Commented Dec 28, 2011 at 3:35
  • 1
    I know it's a broad context but that's exactly what I meant to ask, in a very general context of programming. From the responses seems like Override is the commonly used word, though Overwrite has its specific used as well. Commented Dec 28, 2011 at 9:07
  • A more involved discussion exists in English.SE: english.stackexchange.com/questions/88400/….
    – user565869
    Commented Nov 15, 2012 at 17:54
  • The explaination [here][1] might useful though it is not about terminology [1]: english.stackexchange.com/questions/88400/…
    – A Man
    Commented Dec 12, 2014 at 3:00

6 Answers 6

289

If you're replacing one implementation completely with another, it's "overwriting" or more commonly "replacing". If you're replacing an implementation with another for some specific cases, it's "overriding".

To "overwrite" something is to put something else in its place, destroying the thing overwritten. To "override" something is to cause something else to operate instead of it without harming or changing the thing overridden.

4
  • 5
    I disagree. I believe the term "override" can always be used to mean you are replacing an implementation; it shouldn't matter how often or in what manner. Commented Dec 28, 2011 at 3:51
  • I've never heard it used that way, but it doesn't seem wrong to use it that way either. Commented Dec 28, 2011 at 3:56
  • 60
    a quick search on dictionary.com confirms this: overwrite - Destroy (data) or the data in (a file) by entering new data in its place. override - Use one's authority to reject or cancel (a decision, view, etc.)
    – allicarn
    Commented Nov 15, 2012 at 19:50
  • I agree with this answer given. Both terms are often confused in particular in the context of object-oriented programming. The answer given above her matches my correct understanding of the usage of those terms in that context. I also added my own answer below, specific to that context.
    – Kim Mens
    Commented Jan 14, 2023 at 18:22
38

The common used word is Override and it's not language-specific as you can also read from wikipedia: http://en.wikipedia.org/wiki/Method_overriding

0
27

Both are generic terminologies Override is the prevention of some previous action or decision and on the other hand Overwrite refers to something being written over something previously written.

in simple words,

Actions and decisions are overriden.

Information is overwritten.

19

This is my understanding of what the differences of Overriding and Overwriting are, in terms of a real-world example:

Assume that you have an automobile manufacturing company. You are famous and happy with your customers since they always trust you and purchase your products.

To proceed with your business, you have, basically, 2 options in hand:

  1. All the things come through and you know that you step in the right path. So you want to not only keep the previous models but also keep enhancing them. Though, how come? Probably by adding some new features to the existing models! Now new models have all the features PLUS newly enhanced features.

  2. You know that the way you went through was sort of wrong! what an awful approach!! You notice quickly that the company should change the entire technology, otherwise it'll be undergoing harsh situations (like bankruptcy or so...)

After all, in terms of programming, the first approach refers to Overriding since you add some new BEHAVIORS to your cars while keeping the prior behaviors which the car had, whereas the second approach refers to Overwriting since you want to change the behavior(s) entirely, and develop new features from scratch.

Hope this helps you out.

0
1

I think if given some context, it would be so much eaiser to understand and distinguish.

From APUE §10.17:

POSIX.1 also specifies that abort overrides the blocking or ignoring of the signal(SIGABRT) by the process.

From Bing Dictionary:

override sth: to use your authority to reject sb's decision, order, etc.

Here override means it "ignores" something by its higher authority. abort does not replace the signal mask of the process, it just "ignore" the constraint with higher authority.

So I think override and overwrite are totally 2 different words. overwrite should be the word for replacing the old content.

1

The terms overriding and overwriting are often (conf)used in the context of object-oriented programming. (The fact that these words when pronounced in English by non-native speakers they sound similar adds to this confusion.) In object-oriented programming, thanks to the mechanism of inheritance, it is possible for subclasses to re-implement methods that were already implemented in a parent class. This is a powerful mechanism that enables fine-grained code and design reuse, because it allows to define subclasses that are special cases of the parent classes of which they inherit, with slightly specialised behaviour.

The difference between (method) overriding and (method) overwriting lies in how a method of a subclass re-implements the original method that was implemented in the class from which it inherits.

We talk about method overwriting if the already existing method gets remplaced by a completely new implementation which is not connected to the original implementation (often implementing an alternative, but independent, implementation of a similar functionality).

We talk about method overriding if the method defined in the subclass specialises the original implementation of the method to a special case, but in an incremental way, by making use of a super call. The effect of the super call is to execute the behaviour as defined by the original method, but in addition to that the method in the subclass can add additional instructions to specialise that behaviour.

Not the answer you're looking for? Browse other questions tagged or ask your own question.