By willc2

2008-09-30 23:45:10 8 Comments

Can someone provide a simple explanation of methods vs. functions in OOP context?


@Gustavo Rubio 2008-10-01 00:33:40

In general: methods are functions that belong to a class, functions can be on any other scope of the code so you could state that all methods are functions, but not all functions are methods:

Take the following python example:

class Door:
    def open(self):
    print 'hello stranger'

def knock_door:
    a_door = Door()


The example given shows you a class called "Door" which has a method or action called "open", it is called a method because it was declared inside a class. There is another portion of code with "def" just below which defines a function, it is a function because it is not declared inside a class, this function calls the method we defined inside our class as you can see and finally the function is being called by itself.

As you can see you can call a function anywhere but if you want to call a method either you have to pass a new object of the same type as the class the method is declared (Class.method(object)) or you have to invoke the method inside the object (object.Method()), at least in python.

Think of methods as things only one entity can do, so if you have a Dog class it would make sense to have a bark function only inside that class and that would be a method, if you have also a Person class it could make sense to write a function "feed" for that doesn't belong to any class since both humans and dogs can be fed and you could call that a function since it does not belong to any class in particular.

@yourcomputergenius 2018-08-31 22:19:37

This answer---mostly its first sentence---is by far the most concise and overall best answer to the question.

@Pratik Parmar 2020-05-06 12:19:48

A function and a method look very similar. They also have inputs and return outputs. The difference is that a method is inside of a class whereas a function is outside of a class.

@Aaron 2008-09-30 23:51:53

A method is on an object.
A function is independent of an object.

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 you're in a class.

@Rosdi Kasim 2014-03-21 08:15:25

It is time to add C#.

@Lynn Crumbling 2014-04-07 13:14:30

@RosdiKasim For C#, there are only methods. (since even static methods need to be associated with an object)

@Squeazer 2014-04-15 08:00:25

How about static methods in a class? Those would be independent of an object (in java). Wouldn't that be a function then?

@Xacto01 2014-09-10 17:58:59

What about Javascript?

@Bob 2015-02-05 16:45:23

In Scala: function A function can be invoked with a list of arguments to produce a result. A function has a parameter list, a body, and a result type. Functions that are members of a class, trait, or singleton object are called methods. Functions defined inside other functions are called local functions. Functions with the result type of Unit are called procedures. Anonymous functions in source code are called function literals. At run time, function literals are instantiated into objects called function values. Programming in Scala Second Edition. Martin Odersky - Lex Spoon - Bill Venners

@xji 2015-05-27 08:31:54

@Squeazer There is a question about that recently… The Java Language Specification just differs them as "class method"(static) and "instance method". So they're still all methods.

@Pejs 2015-07-22 14:13:02

In other words, when watching tutorials, guy who makes them sometimes uses word 'method' sometimes 'function', but since this is Java, I can assume he is talking about the very same thing?

@Rudi Kershaw 2015-09-19 12:57:53

@Squeazer static methods in Java are associated with a class, which itself is an object. As a related aside, all methods are functions. But not all functions are methods. Which is to say that this answer is technically incorrect. Because methods are a subset of functions, some functions are not independent of objects.

@fibonacci 2015-11-10 03:12:18

In JavaScript, "when a function is stored as a property of an object, we call it a method" (which means a method is not independent of an object), "When a function is not the property of an object, then it is invoked as a function"(a function is independent). These sentences quoted by double quotation marks are from the book "JavaScript: The Good Parts".

@nicomp 2015-11-12 03:13:37

A Java method may not be on an object: it could be static.

@Max Heiber 2016-01-07 04:07:51

Java has lambda expressions, which are functions that are not methods

@Ali Yousefi Sabzevar 2016-08-27 06:54:22

In Python there are methods and functions.

@Trunk 2019-07-24 16:18:55

The distinction is often a bit academic insofar as methods can be created to do all the things that functions do. But in OO programming a method requires that only a class (or an instance of it) which includes that method may invoke that method. Functions only require a set of values (used as its parameters) and they return another set of values.

@RayLoveless 2019-10-02 05:42:52

Its time to add javascript.

@Vl4dimyr 2020-01-29 09:30:56

@nicomp but if the function/method is static is it a function or a method? It cannot just be a function because it can directly work with private static variables of its class! But it cannot just be a method because it cannot operate on non-static data unless they are passed explicitly.

@TanvirArjel 2020-03-22 15:19:42

@RosdiKasim Done! Updated for both C# and Python!

@jmoreno 2020-04-15 00:20:59

@Vl4dimyr: a static method is still a method. It is called via the class. The only important difference is that it doesn’t have the instance passed to it implicitly.

@Cris Luengo 2020-06-26 17:18:39

In C++ there are no methods, there are member functions.

@raiks 2020-03-05 11:52:07

In just 2 words: non-static ("instance") methods take a hidden pointer to "this" (as their 1st param) which is the object you call the method on.

That's the only difference with a regular standalone function, dynamic dispatching notwithstanding.

If you are interested, read the details below.

I'll try to be short and will use C++ as an example although what I say can be applied to virtually every language.

  • For your CPU, both functions and methods are just pieces of code. Period.
  • As such, when functions/methods are called, they can take parameters

Ok, I said there's no actual difference. Let's dig a bit deeper:

  • There are 2 flavors of methods: static and non-static
  • Static methods are like regular functions but declared inside the class that acts merely like a namespace
  • Non-static ("instance") methods take a hidden pointer to "this". That's the only difference with a regular standalone function.

Dynamic dispatching aside, it means it's as simple as that:

class User {
    public string name; // I made it public intentionally

    public void printName() {
        cout << << endl;

is equivalent to

public getName(User & user) {
    cout << << endl;

So, essentially, user->printName() is just syntactic sugar for getName(user).

If you don't use dynamic dispatch, that's all. If it is used, then it's a bit more involved, but the compiler will still emit what looks like a function taking this as a first parameter.

@Sapphire_Brick 2019-09-22 11:53:44

They're often interchangeable, but a method usually refers to a subroutine inside a class, and a function usually refers to a subroutine outside the class. for instance, in Ruby:

# function
def putSqr(a)
   puts a ** 2

class Math2
   # method
   def putSqr(a)
      puts a ** 2

In Java, where everything (except package and import statements) must be inside the class, people almost always refer to them as "methods".

@yogendra saxena 2019-12-20 07:11:11


A Function is a piece of code to run.
A Method is a Function inside an Object.

Example of a function:

function sum(){

Example of a Method:

const obj = {

So thats why we say that a "this" keyword inside a Function is not very useful unless we use it with call, apply or bind .. because call, apply, bind will call that function as a method inside object ==> basically it converts function to method

@Aditya 2019-01-17 08:35:50

Function - A function in an independent piece of code which includes some logic and must be called independently and are defined outside of class.

Method - A method is an independent piece of code which is called in reference to some object and are be defined inside the class.

@Wolfgang Roth 2019-08-21 07:11:22

What do you call a piece of code in a static class, that is also static, is this a method or a function? A static function/method of a class does not need an object of the class it is declared in.

@Subrat Kumar Palhar 2017-12-25 03:55:51

A class is the collection of some data and function optionally with a constructor.

While you creating an instance (copy,replication) of that particular class the constructor initialize the class and return an object.

Now the class become object (without constructor) & Functions are known as method in the object context.

So basically

Class <==new==>Object

Function <==new==>Method

In java the it is generally told as that the constructor name same as class name but in real that constructor is like instance block and static block but with having a user define return type(i.e. Class type)

While the class can have an static block,instance block,constructor, function The object generally have only data & method.

@Siraj Alam 2017-12-15 18:42:27

Difference Between Methods and Functions

From reading this doc on Microsoft

Members that contain executable code are collectively known as the function members of a class. The preceding section describes methods, which are the primary kind of function members. This section describes the other kinds of function members supported by C#: constructors, properties, indexers, events, operators, and finalizers.

So methods are the subset of the functions. Every method is a function but not every function is a method, for example, a constructor can't be said as a method but it is a function.

@Jon Hanna 2018-01-12 20:50:08

Properties, indexers and events are not functions. The getters, setters (for properties and indexers), adders and removers (for events) are functions. Function members are members that are associated with one or more functions, but not necessarily by being a function.

@SamyCode 2017-12-14 14:03:07

Let's not over complicate what should be a very simple answer. Methods and functions are the same thing. You call a function a function when it is outside of a class, and you call a function a method when it is written inside a class.

@Duc Filan 2017-10-08 00:07:41

Simple way to remember:

  • Function → Free (Free means not belong to an object or class)
  • Method → Member (A member of an object or class)

@Sapphire_Brick 2019-12-24 15:04:09

since there's usually interchangeable, why do you need a mnemonic?

@Lahar Shah 2017-09-28 14:12:19

Here is some explanation for method vs. function using JavaScript examples:

test(20, 50); is function define and use to run some steps or return something back that can be stored/used somewhere.

You can reuse code: Define the code once and use it many times.

You can use the same code many times with different arguments, to produce different results.

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b

var test = something.test(); here test() can be a method of some object or custom defined a prototype for inbuilt objects, here is more explanation:

JavaScript methods are the actions that can be performed on objects.

A JavaScript method is a property containing a function definition.

Built-in property/method for strings in javascript:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

Custom example:

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

You can define properties for String, Array, etc as well for example

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");

var something = "ThisIsSomeString"

// now use distance like this, run and check console log


Some references: Javascript Object Method, Functions, More info on prototype

@Paul Roub 2017-09-28 14:17:40

Please don't post identical answers to multiple questions. Post one good answer, then vote/flag to close the other questions as duplicates. If the question is not a duplicate, tailor your answers to the question.

@Lahar Shah 2017-09-28 14:30:05

Thank you for the feedback, I didn't tailor other answer, I deleted that anwer. :-)

@Lance LI 2017-09-06 04:02:43

In C++, sometimes, method is used to reflect the notion of member function of a class. However, recently I found a statement in the book «The C++ Programming Language 4th Edition», on page 586 "Derived Classes"

A virtual function is sometimes called a method.

This is a little bit confusing, but he said sometimes, so it roughly makes sense, C++ creator tends to see methods as functions can be invoked on objects and can behave polymorphic.

@f-society 2017-04-23 23:11:23

I know many others have already answered, but I found following is a simple, yet effective single line answer. Though it doesn't look a lot better than others answers here, but if you read it carefully, it has everything you need to know about the method vs function.

A method is a function that has a defined receiver, in OOP terms, a method is a function on an instance of an object.

@Andrew Edgecombe 2008-10-01 00:00:13

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.)

@Raffi Khatchadourian 2012-06-13 21:59:01

For 1), you should also add that methods in C++ are called member functions. Thus, the difference between functions and methods in this context is analogous to the difference between functions and member functions in C++. Furthermore, languages like Java only have methods. In this case, functions would be analogous to static methods and methods would have the same meaning. For 2), you should add that a method is able to operate on the private instance (member) data declared as part of the class. Any code can access public instance data.

@Tyler Gillies 2013-05-09 20:22:52

a function is a mathematical construct. I would say all methods are functions but not all functions are methods

@HHC 2013-07-02 02:26:09

Coming from a functional programming background, I feel there is a profound distinction between function and method. Mainly methods have side effects, and that functions should be pure thus giving a rather nice property of referential transparency

@Paul Draper 2013-10-15 05:07:30

@TylerGillies and HHC, I agree it might be nice if "function" and "method" meant what you wanted them to, but your definitions do not reflect some very common uses of those terms.

@Carcigenicate 2015-05-22 16:44:17

By this definition wouldn't a static method not actually be considered a method because it doesn't have anything to do with a particular instance?

@bubakazouba 2015-07-18 01:08:56

a static method is a class method, while a "normal" method (i.e a method associated with a particular object) is an instance method

@Rudi Kershaw 2015-09-19 13:02:57

Where did you get the criteria that 'All data that is passed to a function is explicitly passed.'? That is first clearly impossible because even constants and literals are data. But, assuming you don't mean it in that literal sense I cant find definitions of functions that assert that. Also it supports the implication that methods are not a subset of functions, which I have to agree with @TylerGillies on.

@Max Heiber 2016-01-07 04:06:49

@RaffiKhatchadourian As of 2014-04, Java has functions that are not methods:…

@Max Heiber 2016-01-07 04:13:32

@AndrewEdgecombe, you wrote that functions are "called by name", by which I think you meant that they are called like this: foo(). But anonymous functions are not called in this way (they are anonymous).

@sara 2016-05-19 15:15:08

Can you cite any sources for this? Or at least give some context. I don't think this definition is universal.

@Yousha Aleayoub 2017-03-11 09:11:21

Its WRONG. Any function MUST return a value, otherwise it is a procedure.

@Goutham Anush 2017-12-20 07:35:00

I found the same answer at…

@Bill K 2018-01-18 21:26:41

A really easy test is that a function always returns the same result if called with the same parameters. A method may also involve state. This means that--for instance in Java a static call might not be a "Function" since it can deal with static variables. It also means that a non-static call might be a function: f(int x){return x*x) is a function in any context. This is the most common usage I have seen lately.

@Honey 2019-02-06 14:43:43

does your second note, just mean that it can mutate it?

@Jorgesys 2014-10-28 23:08:20

A very general definition of the main difference between a Function and a Method:

Functions are defined outside of classes, while Methods are defined inside of and part of classes.

@Michael Burr 2008-09-30 23:48:11

'method' is the object-oriented word for 'function'. That's 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 there's some complex, meaningful difference.

Really - there isn't 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++ isn't really an object-oriented language; however, I prefer to take it as an indication that a pretty smart group of people didn't think there was a particularly strong reason to use a different term.

@IQAndreas 2014-04-12 17:54:36

Well, ActionScript can have both methods and functions, depending on if the function is bound to an instance of a class or not (all depends on how it is defined). So, there is a difference.

@ty1824 2014-11-04 09:39:18

A method is a special type of function with an implicit argument passed (an instance of the class that the method is defined on). This is important as a function, in strict terms, should not use or modify anything not in its argument list.

@Max Heiber 2016-01-07 04:09:31

@ty1824 it's not always the case that methods are passed implicit arguments. In Python, the self argument is explicit. And many languages have static methods, which are not passed an instance.

@ty1824 2016-01-07 04:17:06

@mheiber those are some valid points. With regards to self, you are correct, it is explicitly defined. The key is that the call is implicit, based on the original object reference. There are languages that support overriding a this or self, but those constructs are then usually referred to as functions, rather than methods.

@ty1824 2016-01-07 04:20:35

@mheiber As far as static methods are concerned - java implemented them as a workaround so functions could be implemented without requiring a context. I would go so far as to propose that 'static method' is a misleading term and should be replaced... in an ideal theoretical world :)

@Max Heiber 2016-01-07 04:49:28

@ty1824 C++, Scala, Python, Ruby, JavaScript, and Scala all have static methods, so I don't think it's just a Java thing. I don't like them either: they amount to using objects (bundles of state) as if they were namespaces.

@MyName 2018-12-15 14:00:34

@ty1824 - The "implicit argument" being passed for methods is not true in all object models. For example, in the Common Lisp Object System (CLOS), a method call looks just like a function call. Example: (method obj param1 param2) and (function obj param1 param). And a method is called a method (defined with defmethod) while a function is called a funtion (defined with defun).

@kaya3 2020-02-03 15:47:03

The most significant difference is that a method can be overridden in a subclass, but a function cannot be overridden (though in some languages it can be shadowed). Method calls therefore are (in the general case) dynamically dispatched because a method call cannot be statically bound to a particular class's implementation of that method. A function call can generally be statically bound to the function's implementation (in languages with static binding).

@Jaimin Patel 2016-01-12 02:13:19

Historically, there may have been a subtle difference with a "method" being something which does not return a value, and a "function" one which does.Each language has its own lexicon of terms with special meaning.

In "C", the word "function" means a program routine.

In Java, the term "function" does not have any special meaning. Whereas "method" means one of the routines that forms the implementation of a class.

In C# that would translate as:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

But really, I re-iterate that there is really no difference in the 2 concepts. If you use the term "function" in informal discussions about Java, people will assume you meant "method" and carry on. Don't use it in proper documents or presentations about Java, or you will look silly.

@Yousha Aleayoub 2017-03-11 09:16:04

Actually, in your example both are method... or I would call It procedure and function.

@Akshay Khale 2015-11-10 14:23:44

Function is the concept mainly belonging to Procedure oriented programming where a function is an an entity which can process data and returns you value

Method is the concept of Object Oriented programming where a method is a member of a class which mostly does processing on the class members.

@Morfidon 2015-03-31 22:34:12

IMHO people just wanted to invent new word for easier communication between programmers when they wanted to refer to functions inside objects.

If you are saying methods you mean functions inside the class. If you are saying functions you mean simply functions outside the class.

The truth is that both words are used to describe functions. Even if you used it wrongly nothing wrong happens. Both words describe well what you want to achieve in your code.

Function is a code that has to play a role (a function) of doing something. Method is a method to resolve the problem.

It does the same thing. It is the same thing. If you want to be super precise and go along with the convention you can call methods as the functions inside objects.

@Marvin 2013-07-30 04:02:56

I am not an expert, but this is what I know:

  1. Function is C language term, it refers to a piece of code and the function name will be the identifier to use this function.

  2. Method is the OO term, typically it has a this pointer in the function parameter. You can not invoke this piece of code like C, you need to use object to invoke it.

  3. The invoke methods are also different. Here invoke meaning to find the address of this piece of code. C/C++, the linking time will use the function symbol to locate.

  4. Objecive-C is different. Invoke meaning a C function to use data structure to find the address. It means everything is known at run time.

@Abdullah Leghari 2014-02-06 05:03:18

Function or a method is a named callable piece of code which performs some operations and optionally returns a value.

In C language the term function is used. Java & C# people would say it a method (and a function in this case is defined within a class/object).

A C++ programmer might call it a function or sometimes method (depending on if they are writing procedural style c++ code or are doing object oriented way of C++, also a C/C++ only programmer would likely call it a function because term 'method' is less often used in C/C++ literature).

You use a function by just calling it's name like,

result = mySum(num1, num2);

You would call a method by referencing its object first like,

result = MyCalc.mySum(num1,num2);

@Dirk Schumacher 2012-04-13 09:50:07

for me: the function of a method and a function is the same if I agree that:

  • a function may return a value
  • may expect parameters

Just like any piece of code you may have objects you put in and you may have an object that comes as a result. During doing that they might change the state of an object but that would not change their basic functioning for me.

There might be a definition differencing in calling functions of objects or other codes. But isn't that something for a verbal differenciations and that's why people interchange them? The mentions example of computation I would be careful with. because I hire employes to do my calculations:

new Employer().calculateSum( 8, 8 );

By doing it that way I can rely on an employer being responsible for calculations. If he wants more money I free him and let the carbage collector's function of disposing unused employees do the rest and get a new employee.

Even arguing that a method is an objects function and a function is unconnected computation will not help me. The function descriptor itself and ideally the function's documentation will tell me what it needs and what it may return. The rest, like manipulating some object's state is not really transparent to me. I do expect both functions and methods to deliver and manipulate what they claim to without needing to know in detail how they do it. Even a pure computational function might change the console's state or append to a logfile.

@gian ebao 2008-12-03 09:47:08

Function is a set of logic that can be used to manipulate data.

While, Method is function that is used to manipulate the data of the object where it belongs. So technically, if you have a function that is not completely related to your class but was declared in the class, its not a method; It's called a bad design.

@Sam Stokes 2008-10-01 01:20:03

Since you mentioned Python, the following might be a useful illustration of the relationship between methods and objects in most modern object-oriented languages. In a nutshell what they call a "method" is just a function that gets passed an extra argument (as other answers have pointed out), but Python makes that more explicit than most languages.

# perfectly normal function
def hello(greetee):
  print "Hello", greetee

# generalise a bit (still a function though)
def greet(greeting, greetee):
  print greeting, greetee

# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
  print greeter.greeting, greetee

# very simple class we can pass to greet_with_greeter
class Greeter(object):
  def __init__(self, greeting):
    self.greeting = greeting

  # while we're at it, here's a method that uses self.greeting...
  def greet(self, greetee):
    print self.greeting, greetee

# save an object of class Greeter for later
hello_greeter = Greeter("Hello")

# now all of the following print the same message
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")

Now compare the function greet_with_greeter and the method greet: the only difference is the name of the first parameter (in the function I called it "greeter", in the method I called it "self"). So I can use the greet method in exactly the same way as I use the greet_with_greeter function (using the "dot" syntax to get at it, since I defined it inside a class):

Greeter.greet(hello_greeter, "World")

So I've effectively turned a method into a function. Can I turn a function into a method? Well, as Python lets you mess with classes after they're defined, let's try:

Greeter.greet2 = greet_with_greeter

Yes, the function greet_with_greeter is now also known as the method greet2. This shows the only real difference between a method and a function: when you call a method "on" an object by calling object.method(args), the language magically turns it into method(object, args).

(OO purists might argue a method is something different from a function, and if you get into advanced Python or Ruby - or Smalltalk! - you will start to see their point. Also some languages give methods special access to bits of an object. But the main conceptual difference is still the hidden extra parameter.)

@Bradley Mazurek 2008-10-01 00:54:03

A function is a mathematical concept. For example:

f(x,y) = sin(x) + cos(y)

says that function f() will return the sin of the first parameter added to the cosine of the second parameter. It's just math. As it happens sin() and cos() are also functions. A function has another property: all calls to a function with the same parameters, should return the same result.

A method, on the other hand, is a function that is related to an object in an object-oriented language. It has one implicit parameter: the object being acted upon (and it's state).

So, if you have an object Z with a method g(x), you might see the following:

Z.g(x) = sin(x) + cos(Z.y)

In this case, the parameter x is passed in, the same as in the function example earlier. However, the parameter to cos() is a value that lives inside the object Z. Z and the data that lives inside it (Z.y) are implicit parameters to Z's g() method.

@OscarRyz 2008-10-01 00:21:08

If you feel like reading here is "My introduction to OO methods"

The idea behind Object Oriented paradigm is to "threat" the software is composed of .. well "objects". Objects in real world have properties, for instance if you have an Employee, the employee has a name, an employee id, a position, he belongs to a department etc. etc.

The object also know how to deal with its attributes and perform some operations on them. Let say if we want to know what an employee is doing right now we would ask him.

employe whatAreYouDoing.

That "whatAreYouDoing" is a "message" sent to the object. The object knows how to answer to that questions, it is said it has a "method" to resolve the question.

So, the way objects have to expose its behavior are called methods. Methods thus are the artifact object have to "do" something.

Other possible methods are

employee whatIsYourName
employee whatIsYourDepartmentsName


Functions in the other hand are ways a programming language has to compute some data, for instance you might have the function addValues( 8 , 8 ) that returns 16

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

Since first popular programming languages ( such as fortran, c, pascal ) didn't cover the OO paradigm, they only call to these artifacts "functions".

for instance the previous function in C would be:

int addValues( int x, int y ) 
   return x + y;

It is not "natural" to say an object has a "function" to perform some action, because functions are more related to mathematical stuff while an Employee has little mathematic on it, but you can have methods that do exactly the same as functions, for instance in Java this would be the equivalent addValues function.

public static int addValues( int x, int y ) {
    return x + y;

Looks familiar? That´s because Java have its roots on C++ and C++ on C.

At the end is just a concept, in implementation they might look the same, but in the OO documentation these are called method.

Here´s an example of the previously Employee object in Java.

public class Employee {

    Department department;
    String name;

    public String whatsYourName(){
    public String whatsYourDeparmentsName(){
    public String whatAreYouDoing(){
        return "nothing";
    // Ignore the following, only set here for completness
    public Employee( String name ) { = name;


// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John

// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();

// Print the info to the console.

 System.out.printf("Employee %s is doing: %s", name, doingWhat );

Employee John is doing nothing.

The difference then, is on the "domain" where it is applied.

AppleScript have the idea of "natural language" matphor , that at some point OO had. For instance Smalltalk. I hope it may be reasonable easier for you to understand methods in objects after reading this.

NOTE: The code is not to be compiled, just to serve as an example. Feel free to modify the post and add Python example.

@moffdub 2008-10-01 01:17:49

Bravo! Brilliant exposition on how methods are commands to objects. This is key to understanding OO and the lack of the rhetoric you display in this answer is why OO is so abused in the industry today. Excellent post.

@Mike Tunnicliffe 2008-09-30 23:55:13

Let's say a function is a block of code (usually with its own scope, and sometimes with its own closure) that may receive some arguments and may also return a result.

A method is a function that is owned by an object (in some object oriented systems, it is more correct to say it is owned by a class). Being "owned" by a object/class means that you refer to the method through the object/class; for example, in Java if you want to invoke a method "open()" owned by an object "door" you need to write "".

Usually methods also gain some extra attributes describing their behaviour within the object/class, for example: visibility (related to the object oriented concept of encapsulation) which defines from which objects (or classes) the method can be invoked.

In many object oriented languages, all "functions" belong to some object (or class) and so in these languages there are no functions that are not methods.

@Mike Tunnicliffe 2008-10-01 00:10:02

I belabored that methods could be owned by an object or class since Javascript (which you mentioned in your question) is one of the languages that bucks the general trend of object oriented languages by having methods owned by objects and not classes (although similar structures to classes exist).

@Captain Segfault 2008-10-01 00:00:07

To a first order approximation, a method (in C++ style OO) is another word for a member function, that is a function that is part of a class.

In languages like C/C++ you can have functions which are not members of a class; you don't call a function not associated with a class a method.

@Mark Brittingham 2008-09-30 23:59:25

In OO languages such as Object Pascal or C++, a "method" is a function associated with an object. So, for example, a "Dog" object might have a "bark" function and this would be considered a "Method". In contrast, the "StrLen" function stands alone (it provides the length of a string provided as an argument). It is thus just a "function." Javascript is technically Object Oriented as well but faces many limitations compared to a full-blown language like C++, C# or Pascal. Nonetheless, the distinction should still hold.

A couple of additional facts: C# is fully object oriented so you cannot create standalone "functions." In C# every function is bound to an object and is thus, technically, a "method." The kicker is that few people in C# refer to them as "methods" - they just use the term "functions" because there isn't any real distinction to be made.

Finally - just so any Pascal gurus don't jump on me here - Pascal also differentiates between "functions" (which return a value) and "procedures" which do not. C# does not make this distinction explicitly although you can, of course, choose to return a value or not.

Related Questions

Sponsored Content

34 Answered Questions

[SOLVED] What's the difference between an argument and a parameter?

27 Answered Questions

86 Answered Questions

[SOLVED] How do JavaScript closures work?

23 Answered Questions

[SOLVED] What is the difference between call and apply?

11 Answered Questions

39 Answered Questions

[SOLVED] var functionName = function() {} vs function functionName() {}

37 Answered Questions

[SOLVED] What is the difference between an interface and abstract class?

26 Answered Questions

[SOLVED] Difference between staticmethod and classmethod

19 Answered Questions

27 Answered Questions

Sponsored Content