Ιδιότητες και μέθοδοι της κλάσης

Σε μια κλάση μπορούν να δηλωθούν (με τον προσδιορισμό 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(12);
                Point b = new Point(58);
                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");
        }
}