Static vs. Instance Methods
- Static methods can access only static data and invoke other static methods.
- Often serve as helper procedures/functions
- Use when the desire is to provide a utility or access to class data only
- Instance methods can access both instance and static data and methods.
- Implement behavior for individual objects
- Use when access to instance data/methods is required
- An example of static method use is Java’s Math class.
-
All of its functionality is provided as static methods implementing mathematical functions (e.g.,
Math.sin()). - The Math class is designed so that you don’t (and can’t) create actual Math instances.
-
All of its functionality is provided as static methods implementing mathematical functions (e.g.,
- Static methods also are used to implement factory methods for creating objects, a technique discussed later in this class.
class Employee {
String name;
String ssn;
String emailAddress;
int yearOfBirth;
int extraVacationDays = 0;
static int baseVacationDays = 10;
Employee(String name, String ssn) {
this.name = name;
this.ssn = ssn;
}
static void setBaseVacationDays(int days) {
baseVacationDays = days < 10? 10 : days;
}
static int getBaseVacationDays() {
return baseVacationDays;
}
void setExtraVacationDays(int days) {
extraVacationDays = days < 0? 0 : days;
}
int getExtraVacationDays() {
return extraVacationDays;
}
void setYearOfBirth(int year) {
yearOfBirth = year;
}
int getVacationDays() {
return baseVacationDays + extraVacationDays;
}
void print() {
System.out.println("Name: " + name);
System.out.println("SSN: " + ssn);
System.out.println("Email Address: " + emailAddress);
System.out.println("Year Of Birth: " + yearOfBirth);
System.out.println("Vacation Days: " + getVacationDays());
}
}
To change the company vacation policy, do Employee.setBaseVacationDays(15);To give one employee extra vacation, do
e2.setExtraVacationDays(5);
No comments:
Post a Comment