Skip to content
Related Articles

Related Articles

Difference between Instance Variable and Class Variable

View Discussion
Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 28 Apr, 2021
View Discussion
Improve Article
Save Article

Instance Variable: It is basically a class variable without a static modifier and is usually shared by all class instances. Across different objects, these variables can have different values. They are tied to a particular object instance of the class, therefore, the contents of an instance variable are totally independent of one object instance to others.

Example:

class Taxes  
{  
   int count;  
   /*...*/  
}  

Class Variable: It is basically a static variable that can be declared anywhere at class level with static. Across different objects, these variables can have only one value. These variables are not tied to any particular object of the class, therefore, can share across all objects of the class.  

Example:

class Taxes  
{  
   static int count;  
   /*...*/  
}  

Tabular difference between Instance and Class variable:

Instance Variable

Class Variable

It is a variable whose value is instance-specific and now shared among instances.  It is a variable that defines a specific attribute or property for a class.  
These variables cannot be shared between classes. Instead, they only belong to one specific class.  These variables can be shared between class and its subclasses. 
It usually reserves memory for data that the class needs.  It usually maintains a single shared value for all instances of class even if no instance object of the class exists.  
It is generally created when an instance of the class is created.  It is generally created when the program begins to execute.  
It normally retains values as long as the object exists.  It normally retains values until the program terminates.
It has many copies so every object has its own personal copy of the instance variable. It has only one copy of the class variable so it is shared among different objects of the class.  
It can be accessed directly by calling variable names inside the class.  It can be accessed by calling with the class name.  
These variables are declared without using the static keyword.  These variables are declared using the keyword static.  
Changes that are made to these variables through one object will not reflect in another object.  Changes that are made to these variables through one object will reflect in another object. 
My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!