如何解决Dart-函数需要“ Extended”类,但可以通过“ Base”类调用
我遇到了这个问题,想知道为什么Dart编译器会表现得如此。
类Extended
扩展了Base
。因此,调用需要foo()
对象的Base
,可以处理Extended
对象。
bar()
需要一个Extended
对象,因此显然不可能传递Base
对象。
我希望这段代码无法编译。但是它似乎确实可以编译,除非我将Base()
构造函数明确地放在bar()
方法的调用中。
这是什么原因?以及如何确保此类代码不会“意外”编译?
class Base {
String hello = 'hello';
}
class Extended extends Base {
String world = 'world';
}
void foo(Base obj) {
print(obj.hello);
}
void bar(Extended obj) {
print(obj.world);
}
void main() {
Base base = Base();
Extended extended = Extended();
foo(extended); // works
bar(extended); // works
bar(base); // compiles,but throws TypeError upon invocation
//bar(Base()); // does not compile
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。