【问题标题】:How is it possible to create instance of Map class despite being abstract尽管是抽象的,如何创建 Map 类的实例
【发布时间】:2019-08-27 22:56:10
【问题描述】:

我是飞镖新手。

我注意到Map 是一个抽象类,那么如何通过执行以下操作来创建它的实例:

final Map map = {};

有人可以启发我吗,那么它是一个抽象类。 dart 中的抽象,与其他 OOP 语言不一致吗?

【问题讨论】:

    标签: oop object dart abstract-class abstract


    【解决方案1】:

    不可能实例化抽象类,因为它是……抽象的,也就是不完整的。你的问题不清楚,我不确定你从哪里得到这个陈述,但我敢说你误解了某处读到的东西。

    【讨论】:

    • 我用声明代码编辑了问题。该代码类型中的地图对象不是地图吗?我怎么能这样声明呢?我不能用任何其他抽象类这样声明它
    • 我可能误解或混淆了某些东西。如果你能澄清这个困惑。
    • 请阅读“地图文字”:dartlang.org/guides/language/language-tour#maps
    【解决方案2】:

    “Map”本身是一个抽象类,但在 Dart 中,您可以使用 Factory 构造函数提供抽象类的“默认”具体实现。

    通过 Factory 构造函数创建 Map 的实例:

    最终地图 map = Map();

    参见 Dart Map 类文档:

    Constructors
    
    Map()
        Creates a Map instance with the default implementation, LinkedHashMap. [...]
        factory
    

    来自https://api.dartlang.org/stable/2.2.0/dart-core/Map-class.html

    【讨论】:

    • 你是说工厂构造函数可以提供抽象类的具体实例??
    • 不!工厂构造函数可用于提供抽象类(它是另一个类)的特定具体实现。这是您提到的“地图”工厂构造函数的情况。在这种情况下,Map Factory 构造函数提供的具体实现是 LinkedHashMap 类。换句话说,您没有创建抽象类(Map 类)的实例,因为这是不可能的。您正在创建一个具体类的实例 (LinkedHashMap)
    猜你喜欢
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多