Hva er baseklasse?
En baseklasse, også kalt en superklasse, er et dataobjekt som fungerer som et fundament for en eller flere avledede klasser. Ethvert dataspråk som er i stand til arv, kan lage en baseklasse. Avhengig av deres presise type, kan baseklasser kanskje ikke være i stand til å initialisere - tildele en begynnelsesverdi til et objekt - på egen hånd, men de gir alltid en slags felles funksjonalitet til enhver klasse som arver fra dem. Det er aldri en grense for antall avledede klasser, eller underklasser, som baseklasser kan ha, men det kan være en grense, avhengig av dataspråk, til antall baseklasser en avledet klasse kan ha. Språk som tillater at en avledet klasse bare har én base sies å håndheve én arv, mens de som tillater en avledet klasse å ha flere baseklasser bruker flere arv.
Betongbaseklasser kan initialiseres på egen hånd; det vil si å lage et objekt av baseklasse-typen. Hvis et klasseeksempel er en base for en avledet klasseeksempel2, kan begge et objekt av typen Eksempel2 og et objekt av typen Eksempel lages. Et objekt av typen Eksempel kan bare lages ved eksplisitt å be om den objekttypen; å lage et objekt av type eksempel 2 lager ikke et sekundært objekt av typen eksempel. I begge tilfeller bygger objekttypen som opprettes bare en forekomst av seg selv.
Abstrakte baseklasser kan derimot ikke initialiseres på egen hånd, noe som betyr at et objekt av baseklassen ikke kan lages av seg selv. Hvis et klasseeksempel3 er en abstrakt base for en avledet klasseeksempel4, kan bare et objekt av eksempeleksempel4 lages. Selv om typen Eksempel 4 inneholder data fra typen Eksempel 3, vil forsøk på å lage et objekt kun av typen Eksempel 3 resultere i en feil. Denne funksjonaliteten kan til tider være nyttig, spesielt hvis klasseeksempel 3 inneholder private data som bør reguleres tett.
Avhengig av språket den vises i, kan en baseklasse ha litt forskjellig atferd, og markant forskjellige navn. I Java® blir baseklasser alltid referert til med det navnet, mens de i C ++, avhengig av deres struktur, kan kalles virtuelle klasser. Forskjellene i navn og funksjonalitet, selv om de er signifikante når det gjelder dataspråket som brukes, innebærer ikke store forskjeller i prinsippet bak klassene. En baseklasse brukes alltid til å innkapsle felles funksjonalitet og data for dens avledede klasser, uavhengig av språk.