Konsep Constructor
Ketika kita membuat object
atau instance
dari suatu class, kita bisa menginisialisasi nilai awal dari properti yang ada di dalam class tersebut. Hal ini bisa kita lakukan dengan menggunakan constructor. Constructor
sendiri diartikan sebagai fungsi khusus dari suatu class yang bertanggung jawab untuk menginisialisasi nilai awal dari properti yang ada di dalam class tersebut. Dart memiliki 3 jenis constructor, yaitu default
constructor dan named
constructor, dan factory
constructor.
Default Constructor
Default constructor adalah constructor yang tidak memiliki nama
. Default constructor akan dipanggil secara otomatis ketika kita membuat object dari suatu class. Default constructor akan menginisialisasi nilai awal dari properti yang ada di dalam class tersebut. Contoh default constructor:
class Person {
String name;
int age;
Person(var name, var age) {
this.name = name;
this.age = age;
}
//versi singkat
Person(this.name, this.age);
//cara kedua
Person({this.name, this.age});
}
void main() {
var person = Person('John', 20);
print(person.name);
print(person.age);
//cara kedua
var person2 = Person(name: 'John', age: 20);
}
Named Constructor
Ketika kita ingin membuat custom
dari constructor, bisa menggunakan named constructor. Dengan named constructor kita bisa membuat lebih dari 1 constructor. Format dari pembuatan named constructor yakni NamaClass.namaConstructor() {}
. Contoh named constructor:
class Person {
var name = '';
var age = 0;
Person(this.name, this.age);
//named constructor
Person.callName(this.name) {
print('Name is $name');
}
}
void main() {
var person = Person('John', 20);
print(person.name);
print(person.age);
var person2 = Person.callName('John'); //name is John
}
Factory Constructor
Factory constructor digunakan apabila kamu tidak ingin constructor membuat instance baru. Ini sangat berguna ketika kamu ingin membuat instance baru dari class yang sama. Contoh factory constructor:
class Person {
var name = '';
var age = 0;
Person(this.name, this.age);
//factory constructor
factory Person.fromJson(Map<String, dynamic> json) {
return Person(json['name'], json['age']);
}
}
Biasanya factory contructor digunakan pada kasus pembuatan singleton, yang mana hanya memiliki satu instance saja. Berikut contoh singleton di Dart
class Singleton {
static final Singleton _singleton = Singleton._internal();
factory Singleton() {
return _singleton;
}
Singleton._internal();
}
Sekian materi constructor di Dart. Semoga bermanfaat.