Flutter 使用构造函数与;className()和className.()的名称
我有两种编写构造函数的方法<代码>类名() 它们之间有什么区别?我应该在什么时候使用它们Flutter 使用构造函数与;className()和className.()的名称,flutter,dart,Flutter,Dart,我有两种编写构造函数的方法类名() 它们之间有什么区别?我应该在什么时候使用它们 class GlobalState{ final Map<dynamic,dynamic> _data=<dynamic,dynamic>{}; static GlobalState instance = new GlobalState._(); GlobalState._(); } //In Main Class G
class GlobalState{
final Map<dynamic,dynamic> _data=<dynamic,dynamic>{};
static GlobalState instance = new GlobalState._();
GlobalState._();
}
//In Main Class
GlobalState _store=GlobalState.instance;
and
class GlobalState{
final Map<dynamic,dynamic> _data=<dynamic,dynamic>{};
static GlobalState instance = new GlobalState();
}
//In Main Class
GlobalState _store=GlobalState();
类全局状态{
最终地图_data={};
静态GlobalState实例=新的GlobalState.uz();
全局状态;
}
//主课
GlobalState _store=GlobalState.instance;
及
全局状态类{
最终地图_data={};
静态GlobalState实例=新的GlobalState();
}
//主课
GlobalState_store=GlobalState();
您知道在java中没有像命名构造函数这样的功能。但dart提供了命名构造函数。
每当您想要创建更多的构造函数选项时,就应该在类中创建命名构造函数。
就像您在代码中所做的那样,例如:
class-MyClass{
MyClass();
MyClass.named();
MyClass._private();
我的班级;
}
上面的类有四个构造函数:
:这是默认的未命名构造函数。在设计类时,您可能希望这表示人们大部分时间都应该使用构造函数。使用它更方便,因为它涉及的打字更少MyClass()
:这是一个命名构造函数。也许您希望您的类具有多个构造函数,以便可以以不同的方式构造类的实例。Dart不支持重载函数,所以如果需要多个构造函数,它们需要不同的名称。因此,如果需要多个构造函数,则需要命名其中的一些以区分它们。即使没有多个构造函数,也可能需要显式名称以避免歧义MyClass.named()
:在Dart中,以下划线开头的名称是私有的(通常对文件)MyClass.\u private()
只是一个命名构造函数,不能在定义它的源文件之外使用。通常,当类希望强制调用方使用公共工厂构造函数(或静态方法)获取实例时,您会看到私有构造函数,特别是当类希望拥有单个实例时MyClass.\u private()
:这相当于MyClass.\u()
。它不是默认构造函数,并且仍然是一个私有的命名构造函数(即,调用方必须使用MyClass.\u private()
来调用它)。在这种情况下,类作者想要一个私有构造函数,但不想选择名称。(给事物命名很难。)MyClass.\uz()
GlobalState.\uz()
将构造函数设置为私有,这意味着您无法使用它从外部实例化对象。而GlobalState()
是一个可以从任何地方实例化的常规构造函数。