【发布时间】:2016-06-16 07:11:25
【问题描述】:
void main(){
new C(new A()); // This gives no warning or error
new D(new A()); // This gives an error
}
class A{}
class B extends A{}
class C {
B b;
C(A bb){ this.b = bb; }
}
class D {
B b;
D(this.b);
}
在 main 函数的两个语句中,我将一个 A 类型的实例作为参数。如果我没记错的话,两个语句都应该在强模式下给出错误或警告,但是只有第二个给出错误: 类型检查失败:新的 A()(A) 不是 B 类型
Image showing the code compiled from https://dartpad.dartlang.org/
我刚开始学习 dart 语言,但在文档中找不到此案例的解释。有人知道为什么会这样吗?
【问题讨论】:
标签: class inheritance dart static-typing