Open In App

Difference between Instance Variable and Class Variable

Improve
Improve
Like Article
Like
Save
Share
Report

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. 

Last Updated : 28 Apr, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads