( enpassant | 2010. 09. 19., v – 11:28 )

Nem tudom, hogy nem akarod érteni, vagy tényleg nem érted mit akarok mondani.
Adok inkább egy példát:


Alma osztály:

package gyumolcs;
class Alma {
  protected int size = 0;
  public setSize(int newSize) {
    if (newSize > 10) throw new IllegalArgumentException("Túl nagy alma méret!");
    size = newSize;
  }
}

Feldolgozó osztály:

package gyumolcs;
class Feldolgozo {
  private Alma alma;
  public feldolgoz() {
    alma.size = 15;
  }
}

Az Alma osztály készítője nem szeretné, ha más hozzáférne a size member változóhoz közvetlenül, csak a leszármazott osztály.
Ezzel szemben a feoldolgozo osztály közvetlenül is hozzáfér az alma méretéhez és át tudja állítani kikerülve a set-et.
A feldolgoz metódus írásakor begépeli az "alma."-ot, ilyenkor sok IDE felhozza a választható membereket, ahol akár figyelmetlenségből is kiválaszthatja a méretet (size) és beállíthat rossz értéket.

Én ezt a nyelv hibájának tartom, he Te nem, akkor más a véleményünk ;-)