OOP Datenkapselung mittels private - length Attribut bei Array

knowledge

Bekanntes Mitglied
Hallo,

ein wichtiges Prinzip in der OOP ist doch die Datenkapselung, die ich mittels der Modifier private usw. erreichen kann. Man sollte ja Instanzvariablen immer private setzen und zum Zugriff getter-/setter Methoden nutzen.

Wieso ist aber Bsp. das length Attribut bei einem Array nicht private gesetzt, so dass man direkt über Arrayreferenz.length darauf zugreifen kann (auch wenn das Attribut nicht verändert werden kann)... Hätte man nicht auch einfach eine getLength() Methode bereitstellen können?
 
Kapselung != Information hiding

Getter & Setter stellen keine Kapselung asicher, sondern "Information Hiding", zB. gibt es hier keine Kapselung:
Java:
public class Demo {
    private int[] indexArray[];

    public int[] getIndexArray() {
        return indexArray;
    }

}
 
Hmm, dann erkläre mir biite mal den Unterschied zw. Kapselung und Info. Hiding. Dann hab ich den wohl nicht so richtig verstanden 🙂

Ggf. auch im Hinblick auf meine Array-length Frage.

Danke schonmal
 
Wieso ist aber Bsp. das length Attribut bei einem Array nicht private gesetzt, so dass man direkt über Arrayreferenz.length darauf zugreifen kann (auch wenn das Attribut nicht verändert werden kann)... Hätte man nicht auch einfach eine getLength() Methode bereitstellen können?
Ja, das hätte man. Da die Variable mit final deklariert und der Name length quasi „standardisiert“ ist, ist das aber nicht so schlimm. Bei „Allerweltsmethoden“ heißen die Getter ja auch nicht getLength() oder getSize(), wie es typisch wäre, sondern length() oder size() – und es ist ja auch kürzer und einfacher zu lesen.
 

Neue Themen


Zurück
Oben