我有两种编写构造器的方法。
它们之间有什么区别,何时应该使用它们?
Converters
答案 0 :(得分:2)
例如:
class MyClass {
MyClass();
MyClass.named();
MyClass._private();
MyClass._();
}
上面的类有四个构造函数:
MyClass()
:这是默认的未命名构造函数。在设计类时,您希望它表示人们应该最多使用 的构造函数。使用它更方便,因为它涉及较少的键入。MyClass.named()
:这是一个以命名的构造函数。也许您希望您的类具有多个构造函数,以便可以用不同的方式构造您的类的实例。 Dart不支持重载函数,因此,如果需要多个构造函数,则它们需要不同的名称。因此,如果您想要多个构造函数,则需要命名其中一些以区分它们。即使您没有多个构造函数,您仍可能想要一个显式名称以避免歧义。MyClass._private()
:在Dart中,以下划线开头的名称是 private (通常是文件名)。 MyClass._private()
只是一个命名的构造函数,不能在其定义的源文件之外使用。通常,当类希望强制调用者使用公共工厂构造函数(或静态方法)来获取调用时,会看到私有构造函数实例,尤其是在类要具有一个实例的情况下。MyClass._()
:这等效于MyClass._private()
。它不是默认的构造函数,还是私有的命名构造函数(即,调用者必须使用MyClass._()
来调用它)。在这种情况下,类作者想要一个私有构造函数,但又不想选择一个名称。 (命名很难。)答案 1 :(得分:-1)
您知道在Java中没有像命名构造函数这样的功能。但是dart提供了命名构造函数。 每当您要创建更多2个构造函数选择时,都应在类中创建命名构造函数。 就像您在代码中所做的一样