[英]How to manage a subclass of an abstract class via a third class(not extending the abstract class) if the subclass doesn't have a constructor?
[英]Does extending an abstract class in Dart give the subclass another constructor
我创建了一个带有最终变量的抽象类,因为我需要在其中创建一个构造函数来实例化变量。 这个构造函数会被添加到所有扩展抽象类的类中吗? 我不这么认为,因为我的一些子类将有额外的最终变量需要实例化。 如果是这种情况,抽象类的构造函数起什么作用?
以供参考:
abstract class SuperClass {
final String item
SuperClass(item)
: item = item;
}
class SubClass {
final String item
final String item2
SubClass(item, item2)
: item = item,
item2 = item2;
}
在这种情况下是否扩展最佳选择,如果是,是否会看到超类的构造函数?
您的情况下的抽象类只是一个普通类,因为它没有任何抽象属性/方法。 您唯一不能做的就是创建该抽象类的实例。 扩展 SuperClass 是有意义的,因为您将不再需要定义在超类中声明的字段,如“item”字段。
为了从中受益,您需要编写稍微不同的子类:
abstract class SuperClass {
final String item;
SuperClass(this.item);
}
class SubClass extends SuperClass {
final String item2;
SubClass(String item, this.item2) : super(item);
}
请注意,子类构造函数调用超类的构造函数并将项目值传递给它。 不过,您仍然必须在子类的构造函数中声明 item 值; 否则,您将没有机会初始化它,这是必需的,因为它在超类中是最终的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.