Kelas OOP Abstrak di TypeScript

Ada situasi di mana kita memiliki kelas induk yang berisi properti dan metode umum, dan kelas turunan mewarisi darinya.

Pada saat yang sama, mungkin saja kita akan membuat objek dari kelas turunan, tetapi tidak dari kelas induk. Kelas induk hanya kita butuhkan untuk mengelompokkan properti dan metode umum.

Dalam kasus ini, untuk secara jelas melarang pembuatan objek dari kelas induk, kita dapat mendeklarasikannya sebagai abstrak. Hal ini dilakukan dengan menggunakan kata kunci abstract.

Mari kita lihat contohnya. Ambil kelas User kita dan deklarasikan sebagai abstrak:

typescriptabstract class User {
  public name: string;
  
  constructor(name: string) {
    this.name = name;
  }
}

Mari buat kelas Student, yang mewarisi dari User:

typescriptclass Student extends User {
  public course: number;

  constructor(name: string, course: number) {
    super(name);
    this.course = course;
  }
}

Mari buat kelas Employee, yang mewarisi dari User:

typescriptclass Employee extends User {
  public salary: number;

  constructor(name: string, salary: number) {
    super(name);
    this.salary = salary;
  }
}
Задание 1

Buatlah kelas abstrak Figure, yang merepresentasikan sebuah bentuk geometris. Biarkan di dalamnya terdapat properti untuk keliling dan luas.

Задание 2

Buatlah kelas Square, yang mewarisi dari kelas Figure.

Задание 3

Buatlah kelas Rectangle, yang mewarisi dari kelas Figure.