Klassen versus Structs
Vorteile von Klassen
-
Ihre Objekte werden über Zeiger referenziert und können
daher zu dynamischen Datenstrukturen wie Listen, Bäumen oder
Graphen zusammengebaut werden.
-
Die Objekte gehören nicht zum lokalen Speicher der erzeugenden
Methode und überleben daher diese Methode, wenn sie in globalen
Datenstrukturen verankert werden.
-
Bei Klassen kann man im Gegensatz zu Structs mit Vererbung und
dynamischer Bindung arbeiten.
Vorteile von Structs
-
Ihre Objekte werden nicht über Zeiger referenziert. Der
Zugriff zu ihren Feldern erfordert daher keine Zeigerdereferenzierung
und ist somit schneller. Methoden werden nicht mittels dynamischer
Bindung aufgerufen (außer Interface-Methoden). Somit ist
auch der Methodenaufruf schneller.
-
Die Objekte von Structs gehören zum lokalen Speicher der
deklarierenden Methode und werden am Methodenende wieder freigegeben.
Somit wird der Garbage Collector entlastet.
Structs sollte man daher für leichtgewchtige Datentypen verwenden,
die man ausschließlich lokal in einer Methode verwendet und
nicht zu Datenstrukturen verknüpft. Klassen verwendet man
hingegen für schwergewichtigere Datentypen, deren Objekte länger
leben sollen als die erzeugende Methode. Man verwendet Klassen auch dann,
wenn man aus ihren Objekten dynamische Datenstrukturen aufbauen will
oder wenn man später Unterklassen ableiten und ihre Methoden
dynamisch gebunden aufrufen will.
|