Ιδιότητες και μέθοδοι της κλάσης
Σε μια κλάση μπορούν να δηλωθούν (με τον προσδιορισμό static)
μεταβλητές οι οποίες υπάρχουν μόνο μια φορά για όλη την κλάση,
καθώς και συναρτήσεις που μπορούν
να κληθούν με τη σύνταξη κλάση.συνάρτηση.
Οι μεταβλητές αυτές χρησιμοποιούνται για την επεξεργασία στοιχείων
που αφορούν ολόκληρη την κλάση και όχι τα αντικείμενά της.
Οι συναρτήσεις που έχουν οριστεί static δεν έχουν πρόσβαση σε μη
static μεταβλητές ούτε στη μεταβλητή this.
Το παρακάτω παράδειγμα ορίζει έναν μετρητή numPoints που μετρά πόσα
σημεία είναι ενεργά καθώς και την αντίστοιχη συνάρτηση πρόσβασης getNumPoints:
import gr.aueb.dds.BIO;
class Point {
private int x, y;
// Count number of points used
private static int numPoints;
// Point constructor
Point(int ix, int iy) {
x = ix;
y = iy;
numPoints++; // Adjust points counter
}
// Point constructor
Point(int xy) {
x = y = xy;
numPoints++; // Adjust points counter
}
// Point destructor
public void finalize() {
BIO.println("Another point bites the dust");
BIO.print("The point was at ");
display();
numPoints--; // Adjust points counter
}
// Return number of points currently used
public static int getNumPoints() {
return numPoints;
}
public void display() {
BIO.print("(x=" + x);
BIO.println(", y=" + y + ")");
}
static public void main(String args[]) {
Point a = new Point(1, 2);
Point b = new Point(5, 8);
Point c = new Point(7);
c.display();
a = b;
BIO.println(getNumPoints() + " points are alive now");
BIO.println("Garbage collecting");
// Force the garbage collector to run
System.gc();
BIO.println(Point.getNumPoints() + " points are alive now");
}
}