TypeScript да ООП да абстракт методлар
Бундай бўладики, мерос олувчи синфларда
мумкин бўлган метод бўлиши керак, аммо, бу
методнинг амалга оширилиши аник мерос олувчига
боглик бўлади. Бу
ҳолда бу методни ота-онанинг абстракт синфида
эълон қилиш мумкин, унинг амалга оширилишини
ёзмасдан. Ва шунда мерос олувчилар бу
методларни амалга оширишга мажбур бўладилар. Бундай
методлар абстракт деб аталади ва
шунга ўхшаш abstract калит сузи ёрдамида
эълон қилинади.
Мисол учун бизнинг абстракт синф User ни олайлик. Бу синфнинг
меросхўрлари мажбуран show методага эга бўлиши керак,
объект маълумотларини чиқарувчи.
Бу методнинг амалга оширилиши, аммо,
мерос олувчига боглик бўлади. Келинг User синфида
бу методни абстракт сифатида эълон қиламиз:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Бу методни Student мерос олувчи синфида амалга оширамиз:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Бу методни Employee мерос олувчи синфида амалга оширамиз:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
Абстракт синф Figure да
юза ва периметрни олиш учун
абстракт методлар яратинг.
Мерос олувчи синфлар Square ва
Rectangle да бу методларнинг амалга оширилишини
ёзинг.