This is how the math functions and constants work.
// jamesprogram.java
class jamesprogram {
public static void main (String[] args){
cat member1 = new cat("Emma", "Smith");
cat member2 = new cat("Larry", "Oldman");
cat member3 = new cat("Bob", "Timpy");
System.out.println();
System.out.println(member1.getFirst());
System.out.println(member1.getLast());
System.out.println(member1.getMembers());
System.out.println();
System.out.println(member2.getFirst());
System.out.println(member2.getLast());
System.out.println(member2.getMembers());
// since static variables don't change
// between objects, static information is
// available even when you don't have an
// object
System.out.println();
// we don't need to create an object because
// the variable would be the same anyway
// cus it's static, so the below displays
// the number of members in the cat class
System.out.println(cat.getMembers());
}
}
//cat.java
public class cat {
private String first;
private String last;
// every object SHARES the same variable,
// if you change a static variable, you change
// it for ALL objects
private static int members = 0;
// constructor
public cat (String fn, String ln){
first=fn;
last=ln;
members++;
System.out.printf("Constructor for %s %s, members in the club: %d\n", first, last, members);
}
// method to return first name
public String getFirst(){
return first;
}
// method to return last name
public String getLast(){
return last;
}
// method to return the members
// we have to use 'static int' because
// this is the 'type' that the variable
// was declared as
public static int getMembers(){
return members;
}
}
Outputs:
Constructor for Emma Smith, members in the club: 1
Constructor for Larry Oldman, members in the club: 2
Constructor for Bob Timpy, members in the club: 3
Emma
Smith
3
Larry
Oldman
3
3