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);
}
В обоих операторах основной функции я указываю в качестве параметра экземпляр типа A. Если я не ошибаюсь, оба оператора должны выдавать ошибку или предупреждение в строгом режиме, однако только второй выдает ошибку: Ошибка проверки типа: новое A () (A) не относится к типу B
http://i.stack.imgur.com/pcipz.png
Я только начал изучать язык дротиков и не смог найти в документации объяснения этого случая. Кто-нибудь знает, почему это происходит?