To explain the difference between Instance variables and Class variables, let’s start with an example:
public class Date { protected int year; protected int month; protected int day; protected static final int MINYEAR = 1583; public Date(int newMonth, int newDay, int newYear) { // Initializes this Date with the parameter values month = newMonth; day = newDay; year = newYear; } public int yearIs() { // Returns the year value of this Date return year; } public int monthIs() { // Returns the month value of this Date return month; } public int dayIs() { // Returns the day value of this Date return day; } }
As you can see above, the Date
class demonstrates two kinds of variables: instance variables and class variables. The instance variable of the Date
class are year
, month
, and day
. Their values vary for each different instance of an object inside the Date
class. Instance variables represent the attributes of an object.
MINYEAR
is a class variable because it is defined to be static. The static modifier makes it so that the MINYEAR
class variable It is associated directly with the Date
class, instead of individual objects inside the Date
class. Therefore, a single copy of a static variable is attributes to all the objects inside a class, not individual ones.
Also notice that the final
modifier is added to MINYEAR
, meaning that this variable is in its final form and cannot be modified or changed.
More Notes:
- Constants are also known as static variables
- To re-iterate, static variables like
MINYEAR
in the example above are used to attribute information that is common to an entire class.