Understanding Instance and Class Members
In this section, we discuss the use of thestatic
keyword to create fields and methods that belong to the class, rather than to an instance of the class.Class Variables
When a number of objects are created from the same class blueprint, they each have their own distinct copies of instance variables. In the case of theBicycle
class, the instance variables are cadence
, gear
, and speed
. Each Bicycle
object has its own values for these variables, stored in different memory locations.Sometimes, you want to have variables that are common to all objects. This is accomplished with the
static
modifier. Fields that have the static
modifier in their declaration are called static fields or class variables.
They are associated with the class, rather than with any object. Every
instance of the class shares a class variable, which is in one fixed
location in memory. Any object can change the value of a class variable,
but class variables can also be manipulated without creating an
instance of the class.For example, suppose you want to create a number of
Bicycle
objects and assign each a serial number, beginning with 1 for the first
object. This ID number is unique to each object and is therefore an
instance variable. At the same time, you need a field to keep track of
how many Bicycle
objects have been created so that you know
what ID to assign to the next one. Such a field is not related to any
individual object, but to the class as a whole. For this you need a
class variable, numberOfBicycles
, as follows:public class Bicycle { private int cadence; private int gear; private int speed; // add an instance variable for the object ID private int id; // add a class variable for the // number of Bicycle objects instantiated private static int numberOfBicycles = 0; ... }
Class variables are referenced by the class name itself, as in
Bicycle.numberOfBicycles
Note: You can also refer to static fields with an object reference like
myBike.numberOfBicycles
Bicycle
constructor to set the id
instance variable and increment the numberOfBicycles
class variable:public class Bicycle { private int cadence; private int gear; private int speed; private int id; private static int numberOfBicycles = 0; public Bicycle(int startCadence, int startSpeed, int startGear){ gear = startGear; cadence = startCadence; speed = startSpeed; // increment number of Bicycles // and assign ID number id = ++numberOfBicycles; } // new method to return the ID instance variable public int getID() { return id; } ... }
Tidak ada komentar:
Posting Komentar