This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:inner_classes [2017/02/06 13:14] gthanos |
java:inner_classes [2021/04/12 04:31] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Μη στατικές εμφωλευμένες κλάσεις ====== | ||
| - | Οι μη στατικές εμφωλευμένες κλάσεις ή εσωτερικές κλάσεις (inner classes) αποτελούν την γενικότερη περίπτωση εμφώλευσης μίας κλάσης μέσα σε μία άλλη κλάση. Δείτε το παρακάτω παράδειγμα απεικόνισης των ζυγών στοιχείων ενός πίνακα 15 στοιχείων με χρήση μίας εσωτερικής κλάσης η οποία υλοποιεί το interface [[https:// | ||
| - | |||
| - | <code java 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< | ||
| - | |||
| - | // Inner class implements the DataStructureIterator interface, | ||
| - | // which extends the Iterator< | ||
| - | | ||
| - | 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(); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <WRAP todo center 80% round> Σε αναλογία, | ||
| - | </ | ||
| - | |||
| - | |||
| - | |Προηγούμενο: | ||