- Learn React with TypeScript 3
- Carl Rippon
- 224字
- 2021-06-10 19:16:35
Abstract classes
Abstract classes are a special type of class that can only be inherited from and not instantiated. They are declared with the abstract keyword, as in the following example:
- We can define a base Product class as follows:
abstract class Product {
name: string;
unitPrice: number;
}
- If we try to create an instance of this, the compiler will complain, as we would expect:
- We can create a more specific usable class for food products by extending Product:
class Food extends Product {
constructor(public bestBefore: Date) {
super();
}
}
- Here, we are adding a bestBefore date in our Food class. We can then create an instance of Food, passing in the bestBefore date:
const bread = new Food(new Date(2019, 6, 1));
Abstract classes can have abstract methods that child classes must implement. Abstract methods are declared with the abstract keyword in front of them, as in the following example:
- Let's add an abstract method to our base Product class:
abstract class Product {
name: string;
unitPrice: number;
abstract delete(): void;
}
- After we add the abstract method, the compiler immediately complains about our Food class because it doesn't implement the delete method:
- So, let's fix this and implement the delete method:
class Food extends Product {
deleted: boolean;
constructor(public bestBefore: Date) {
super();
}
delete() {
this.deleted = false;
}
}
推薦閱讀
- SQL Server 從入門到項(xiàng)目實(shí)踐(超值版)
- 測(cè)試驅(qū)動(dòng)開發(fā):入門、實(shí)戰(zhàn)與進(jìn)階
- 控糖控脂健康餐
- Visual C++數(shù)字圖像處理技術(shù)詳解
- Asynchronous Android Programming(Second Edition)
- 數(shù)據(jù)結(jié)構(gòu)習(xí)題解析與實(shí)驗(yàn)指導(dǎo)
- ServiceNow:Building Powerful Workflows
- PHP與MySQL權(quán)威指南
- DB2SQL性能調(diào)優(yōu)秘笈
- Mastering Leap Motion
- C++17 By Example
- Software Architecture with Python
- Oracle Database 12c DBA官方手冊(cè)(第8版)
- Developing RESTful Web Services with Jersey 2.0
- Neo4j Graph Data Modeling