Dart 虚函数(int)是';t无效函数的有效覆盖(动态) 类父类{ void方法(T){} } 类子级扩展父级{ @凌驾 void方法(inti){}//错误:如下所述 空取动态(动态d){ takesType(d);//没有错误 } 无效的takesType(int i){ takesDynamic(i);//无错误 } }
错误: 无效函数(int)不是无效函数(动态)的有效重写 当我可以在方法参数中轻松地将Dart 虚函数(int)是';t无效函数的有效覆盖(动态) 类父类{ void方法(T){} } 类子级扩展父级{ @凌驾 void方法(inti){}//错误:如下所述 空取动态(动态d){ takesType(d);//没有错误 } 无效的takesType(int i){ takesDynamic(i);//无错误 } },dart,Dart,错误: 无效函数(int)不是无效函数(动态)的有效重写 当我可以在方法参数中轻松地将int传递给dynamic,反之亦然时,为什么我会在重写方法时看到错误 附言: 我不是在寻找一种解决方案,即使用extensedparent并使其正常工作,我想知道为什么在重写方法和调用常规方法时会有不同的处理方式 void Function(int x)通常不是void Function(dynamic x)的有效覆盖,因为int版本不能替代dynamic版本 父方法的允许输入是什么?什么都行 允许对子方法
int
传递给dynamic
,反之亦然时,为什么我会在重写方法时看到错误
附言: 我不是在寻找一种解决方案,即使用
extensedparent
并使其正常工作,我想知道为什么在重写方法和调用常规方法时会有不同的处理方式 void Function(int x)
通常不是void Function(dynamic x)
的有效覆盖,因为int
版本不能替代dynamic
版本
父方法的允许输入是什么?什么都行
允许对子方法输入哪些内容?只需int
s
因此,这样的覆盖可能会违反父接口的约定。(例如,如果您有一个Child
的实例,并将其传递给期望的Parent
对象,然后该对象在其上调用方法(“非int”)
,该怎么办?)
(请注意,这并不特定于方法重写。一般来说,如果预期使用较宽类型的函数,则不能使用较窄类型的函数,,即使较窄类型派生自较宽类型。)
Dart确实允许您使用来抑制静态类型错误并显式允许重写,但请注意,这样做并不一定是类型安全的,您将负责确保在运行时不会出现类型错误
进一步阅读:void Function(int x)
通常不是void Function(dynamic x)
的有效覆盖,因为int
版本不能替代dynamic
版本
父方法的允许输入是什么?什么都行
允许对子方法输入哪些内容?只需int
s
因此,这样的覆盖可能会违反父接口的约定。(例如,如果您有一个Child
的实例,并将其传递给期望的Parent
对象,然后该对象在其上调用方法(“非int”)
,该怎么办?)
(请注意,这并不特定于方法重写。一般来说,如果预期使用较宽类型的函数,则不能使用较窄类型的函数,,即使较窄类型派生自较宽类型。)
Dart确实允许您使用来抑制静态类型错误并显式允许重写,但请注意,这样做并不一定是类型安全的,您将负责确保在运行时不会出现类型错误
进一步阅读:
class Parent<T> {
void method(T t) {}
}
class Child extends Parent {
@override
void method(int i) {} // error: mentioned_below
void takesDynamic(dynamic d) {
takesType(d); // no error
}
void takesType(int i) {
takesDynamic(i); // no error
}
}