Читать книгу Angular - Manfred Steyer - Страница 42

Zugriff auf die Basisklasse

Оглавление

In manchen Fällen möchte sich eine Subklasse auf die Dienste ihrer Superklasse stützen. Dazu kommt das Schlüsselwort super zum Einsatz. Die PrivateAddress (siehe Beispiel 2-21), die von der AbstractAddress erbt, veranschaulicht die beiden Arten der Nutzung.

Beispiel 2-21: Zugriff auf die Basisklasse

// src/app/ts/private-address.ts

import { AbstractAddress } from './address';

export class PrivateAddress extends AbstractAddress {

firstName: string = '';

lastName: string = '';

constructor() {

super(0);

}

fullAddress(): string {

return this.firstName + ' ' + this.lastName + ', ' + super.fullAddress();

}

toCSV(): string {

return `${this.id};${this.firstName};${this.lastName};${this.street};

${this.zipCode};${this.city}`;

}

}

Zum einen delegiert ihr Konstruktor einen Standardwert an den Konstruktor der Superklasse. Hierzu ruft er super auf. Zum anderen überschreibt die Klasse Private Address die von der Superklasse bereitgestellte Methode fullAddress mit einer eigenen Implementierung und ruft dafür über super die Implementierung der Superklasse auf.

Im Gegensatz zu anderen Mainstream-Sprachen vererbt TypeScript Konstruktoren. Wenn eine Subklasse wie die hier betrachtete PrivateAddress jedoch einen eigenen Konstruktor aufweist, muss dieser den Konstruktor der Superklasse explizit aufrufen. Genau das ist der Grund dafür, dass der Compiler im betrachteten Fall den Aufruf von super erzwingt.

Angular

Подняться наверх