Appart of having a constructors mechanism similarly to Java and C#, Dart supports the concept of factory constructors. We can define a base class (can also be an abstract class) and provide a factory constructor to be used when a default concrete instance is required.
abstract class IRobot { String talk(String str); factory IRobot() { return new Android(); } } class Android implements IRobot { talk(str) { print("### $str"); } } void main() { IRobot ob = new IRobot(); ob.talk("bla bla bla"); }
The following video clip overviews this code sample, shows its execution and explains it.