User Tools

Site Tools


java:inner_classes

This is an old revision of the document!


Μη στατικές εμφωλευμένες κλάσεις

Οι μη στατικές εμφωλευμένες κλάσεις ή εσωτερικές κλάσεις (inner classes) αποτελούν την γενικότερη περίπτωση εμφώλευσης μίας κλάσης μέσα σε μία άλλη κλάση. Δείτε το παρακάτω παράδειγμα απεικόνισης των ζυγών στοιχείων ενός πίνακα 15 στοιχείων με χρήση μίας εσωτερικής κλάσης η οποία υλοποιεί το interface Iterator:

DataStructure.java
public class DataStructure {
 
  // Create an array
  private final static int SIZE = 15;
  private int[] arrayOfInts = new int[SIZE];
 
  public DataStructure() {
    // fill the array with ascending integer values
    for (int i = 0; i < SIZE; i++) {
      arrayOfInts[i] = i;
    }
  }
 
  public void printEven() {
 
    // Print out values of even indices of the array
    DataStructureIterator iterator = this.new EvenIterator();
    while (iterator.hasNext()) {
      System.out.print(iterator.next() + " ");
    }
    System.out.println();
  }
 
  interface DataStructureIterator extends java.util.Iterator<Integer> { } 
 
  // Inner class implements the DataStructureIterator interface,
  // which extends the Iterator<Integer> interface
 
  private class EvenIterator implements DataStructureIterator {
 
    // Start stepping through the array from the beginning
    private int nextIndex = 0;
 
    public boolean hasNext() {
 
      // Check if the current element is the last in the array
      return (nextIndex <= SIZE - 1);
    }    
 
    public Integer next() {
 
      // Record a value of an even index of the array
      Integer retValue = Integer.valueOf(arrayOfInts[nextIndex]);
 
      // Get the next even element
      nextIndex += 2;
      return retValue;
    }
 
    public void remove() { }
  }
 
  public static void main(String s[]) {
 
    // Fill the array with integer values and print out only
    // values of even indices
    DataStructure ds = new DataStructure();
    ds.printEven();
  }
}

Σε αναλογία, δημιουργήστε την εσωτερική κλάση OddIterator και τη μέθοδο printOdd() για την εκτύπωση των μονών αριθμών του πίνακα.

java/inner_classes.1486386856.txt.gz · Last modified: 2017/02/06 13:14 by gthanos