Due to naming conflict we use "this" keyword inside parameterised constructor. If there is no naming conflict you can remove the "this" keyword . But it's good practice to always use the "this" keyword
void main() {
// Parameterised Constructor
//var employee1 = Employee();
var employee1 = Employee(1, "John", "Doe", "CTO", 12);
print(employee1.id);
print(employee1.firstname);
print(employee1.lastname);
print(employee1.position);
print(employee1.number_of_day_worked);
}
class Employee {
int id;
String firstname;
String lastname;
String position;
int number_of_day_worked;
// Parameterised Constructor - 1
Employee(id, firstname, lastname, position, number_of_day_worked) {
this.id = id;
this.firstname = firstname;
this.lastname = lastname;
this.position = position;
this.number_of_day_worked = number_of_day_worked;
}
// Parameterised Constructor - we avoid the following to be consistent
// Employee(a, b, c, d, e) {
// id = a;
// firstname = b;
// lastname = c;
// position = d;
// number_of_day_worked = e;
// }
}
The values passed in the parameterised constructor are assigned to the instance variables.
So, Parameterised constructor creates the object and also sets the instance variables
You can't use default constructor and parameterised constructor in the same class definition .