MST
星途 面试题库

面试题:TypeScript抽象类与接口的结合使用

假设有一个电商系统,设计一个抽象类`Product`,包含抽象方法`getDetails`用于获取产品详细信息。同时定义一个接口`Discountable`,包含`getDiscount`方法用于获取折扣。创建`Book`类继承自`Product`并实现`getDetails`方法,同时实现`Discountable`接口,在`Book`类中实现`getDiscount`方法,返回固定折扣10%。描述这个设计思路,并给出完整代码实现。
15.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 抽象类 Product:定义为抽象类,是因为它代表产品的通用概念,不同类型产品获取详细信息的方式可能不同,所以将 getDetails 方法定义为抽象方法,由具体子类来实现。
  2. 接口 Discountable:定义了获取折扣的规范,使实现该接口的类具备获取折扣的能力。
  3. Book:作为具体的产品类,继承自 Product 抽象类以获得产品的基本属性和行为,并实现 getDetails 方法来提供图书的详细信息。同时实现 Discountable 接口,提供获取图书折扣的具体实现。

代码实现(以Java为例)

// 抽象类Product
abstract class Product {
    // 抽象方法getDetails用于获取产品详细信息
    public abstract String getDetails();
}

// 接口Discountable
interface Discountable {
    // 获取折扣的方法
    double getDiscount();
}

// Book类继承自Product并实现Discountable接口
class Book extends Product implements Discountable {
    @Override
    public String getDetails() {
        return "This is a book.";
    }

    @Override
    public double getDiscount() {
        return 0.1; // 返回10%的折扣
    }
}

测试代码(可选)

public class Main {
    public static void main(String[] args) {
        Book book = new Book();
        System.out.println(book.getDetails());
        System.out.println("Discount: " + book.getDiscount() * 100 + "%");
    }
}