oop – Whats the difference between a method and a function?

oop – Whats the difference between a method and a function?

A function is a piece of code that is called by name. It can be passed data to operate on (i.e. the parameters) and can optionally return data (the return value). All data that is passed to a function is explicitly passed.

A method is a piece of code that is called by a name that is associated with an object. In most respects it is identical to a function except for two key differences:

  1. A method is implicitly passed the object on which it was called.
  2. A method is able to operate on data that is contained within the class (remembering that an object is an instance of a class – the class is the definition, the object is an instance of that data).

(this is a simplified explanation, ignoring issues of scope etc.)

A method is on an object or is static in class.
A function is independent of any object (and outside of any class).

For Java and C#, there are only methods.
For C, there are only functions.

For C++ and Python it would depend on whether or not youre in a class.
But in basic English:

  • Function: Standalone feature or functionality.
  • Method: One way of doing something, which has different approaches or methods, but related to the same aspect (aka class).

oop – Whats the difference between a method and a function?

method is the object-oriented word for function. Thats pretty much all there is to it (ie., no real difference).

Unfortunately, I think a lot of the answers here are perpetuating or advancing the idea that theres some complex, meaningful difference.

Really – there isnt all that much to it, just different words for the same thing.

[late addition]


In fact, as Brian Neal pointed out in a comment to this question, the C++ standard never uses the term method when refering to member functions. Some people may take that as an indication that C++ isnt really an object-oriented language; however, I prefer to take it as an indication that a pretty smart group of people didnt think there was a particularly strong reason to use a different term.

Leave a Reply

Your email address will not be published.