Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between Static methods and Instance methods

I was just reading over the text given to me in my textbook and I'm not really sure I understand what it is saying. It's basically telling me that static methods or class methods include the "modifier" keyword static. But I don't really know what that means?

Could someone please explain to me in really simple terms what Static or Class Methods are?

Also, could I get a simple explanation on what Instance methods are?

This is what they give me in the textbook:

There are important practical implications of the presence or absence of the static modifier. A public class method may be invoked and executed as soon as Java processes the definition of the class to which it belongs. That is not the case for an instance method. Before a public instance method may be invoked and executed, an instance must be created of the class to which it belongs. To use a public class method, you just need the class. On the other hand, before you can use a public instance method you must have an instance of the class.

The manner in which a static method is invoked within the definition of another method varies according to whether or not the two methods belong to the same class. In the example above, factorial and main are both methods of the MainClass class. As a result, the invocation of factorial in the definition of main simply references the method name, "factorial".

like image 754
Panthy Avatar asked Aug 16 '12 18:08

Panthy


People also ask

What is the difference between static class method and instance method Javatpoint?

The instance method can access the both class variable and instance variables. The class method can access the class variables. The static method cannot access the class variables and static variables. Therefore, it cannot change the behavior of the class or instance state.

What is the difference between static and instance fields?

Instance variables are created when an object is created with the use of the keyword 'new' and destroyed when the object is destroyed. Static variables are created when the program starts and destroyed when the program stops.

What is the main difference between a static and and instance method quizlet?

What is the difference between an instance field and a static field? In an instance field several instances of a class can be created and store different values in each instances field. In a static field a single copy of a class's static field is shared with all instances of the class.


2 Answers

The basic paradigm in Java is that you write classes, and that those classes are instantiated. Instantiated objects (an instance of a class) have attributes associated with them (member variables) that affect their behavior; when the instance has its method executed it will refer to these variables.

However, all objects of a particular type might have behavior that is not dependent at all on member variables; these methods are best made static. By being static, no instance of the class is required to run the method.

You can do this to execute a static method:

MyClass.staticMethod();  // Simply refers to the class's static code 

But to execute a non-static method, you must do this:

MyClass obj = new MyClass();  //Create an instance obj.nonstaticMethod();  // Refer to the instance's class's code 

On a deeper level the compiler, when it puts a class together, collects pointers to methods and attaches them to the class. When those methods are executed it follows the pointers and executes the code at the far end. If a class is instantiated, the created object contains a pointer to the "virtual method table", which points to the methods to be called for that particular class in the inheritance hierarchy. However, if the method is static, no "virtual method table" is needed: all calls to that method go to the exact same place in memory to execute the exact same code. For that reason, in high-performance systems it's better to use a static method if you are not reliant on instance variables.

like image 160
Nathaniel Ford Avatar answered Sep 23 '22 16:09

Nathaniel Ford


Methods and variables that are not declared as static are known as instance methods and instance variables. To refer to instance methods and variables, you must instantiate the class first means you should create an object of that class first.For static you don't need to instantiate the class u can access the methods and variables with the class name using period sign which is in (.)

for example:

Person.staticMethod();           //accessing static method. 

for non-static method you must instantiate the class.

Person person1 = new Person();   //instantiating person1.nonStaticMethod();       //accessing non-static method. 
like image 40
Khalid Ahmed Khichi Avatar answered Sep 22 '22 16:09

Khalid Ahmed Khichi