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 ;-)