Gyakorlat – Osztály kiterjesztése
Ebben a gyakorlatban kiterjeszti az Car
osztályt egy új, metódusnak nevezett osztály létrehozásához ElectricCar
és felülbírálásához.
Folytassa a munkát a játszótéren.
Car
Az osztály alatt hozzon létre egy ilyen nevűElectricCar
extends Car
új osztályt.class ElectricCar extends Car { // Properties unique to ElectricCar // Constructor // Accessors // Methods }
Deklarálja az osztály egyedi
ElectricCar
tulajdonságát típustulajdonságkéntprivate
number
._range
// Properties private _range: number;
Az
constructor
alosztály esetében néhány módon eltér azconstructor
alaposztálytól.- A paraméterlista az alaposztály és az alosztály bármelyik tulajdonságát is tartalmazhatja. (A TypeScript összes paraméterlistához hasonlóan ne feledje, hogy a kötelező paramétereknek meg kell jelenniük a választható paraméterek előtt.)
- A törzsben
constructor
hozzá kell adnia a kulcsszót azsuper()
alaposztály paramétereinek belefoglalásához. Asuper
kulcsszó futtatáskor végrehajtja azconstructor
alaposztályt. - A
super
kulcsszónak az alosztályban lévő tulajdonságokra valóthis.
hivatkozás előtt kell megjelennie.
Adja meg az alaposztály és az alosztály
_range
tulajdonságának osztályátElectricCar
constructor
és tulajdonságait._make
_color
_doors
Ebbenconstructor
a paraméter alapértelmezett értékét állítsa be adoors
következőre2
: .// Constructor constructor(make: string, color: string, range: number, doors = 2) { super(make, color, doors); this._range = range; }
Adja meg a
get
paraméterhez tartozó tartozékokat ésset
tartozékokatrange
.// Accessors get range() { return this._range; } set range(range) { this._range = range; }
Adja meg a következő
charge
metódust, amely egy üzenetet ad vissza a konzolnak. Ez a metódus meghívja azworker
osztályban definiált függvénytCar
. Ez azonban azt a hibát eredményezi, hogy a "worker" tulajdonság privát, és csak az "Autó" osztályon belül érhető el. Tudja, hogyan háríthatja el ezt a problémát?// Methods charge() { console.log(this.worker() + " is charging.") }
Car
Az osztályban módosítsa a függvény hozzáférési módosítóját aworker
következőreprivate
protected
: . Ez lehetővé teszi, hogy azCar
osztály alosztályai használják a függvényt, miközben elrejtik az osztályból példányosított objektumok számára elérhető tagok elől. A metódus hibájánakcharge
most meg kell szűnnie.Tesztelje az új
ElectricCar
osztályt, és ellenőrizze, hogy a várt módon működik-e.let spark = new ElectricCar('Spark Motors','silver', 124, 2); let eCar = new ElectricCar('Electric Car Co.', 'black', 263); console.log(eCar.doors); // returns the default, 2 spark.charge(); // returns "Spark Motors is charging"
Adjon meg egy új
brake
metódust azElectricCar
osztályban, amely különböző megvalósítási részletekkel rendelkezik. Vegye figyelembe, hogy a metódus paraméter-aláírásának és visszatérésibrake
típusának meg kell egyeznie azbrake
Car
osztály metódusával.// Overrides the brake method of the Car class brake(): string { return `${this.worker()} is braking with the regenerative braking system.` }
Tesztelje az új metódust, és ellenőrizze, hogy a várt módon működik-e.
console.log(spark.brake()); // returns "Spark Motors is braking with the regenerative braking system"