gpt4 book ai didi

dart - 在 Dart 中,如何调用被 mixin 方法遮蔽的父类(super class)方法?

转载 作者:行者123 更新时间:2023-12-03 04:39:47 24 4
gpt4 key购买 nike

我有课A它扩展了 B并混入 C像下面的代码。我如何使它工作?

class A extends B with C {
@override
int getValue() {
// Call's C's getValue.
super.getValue();
// Now I want to call B's getValue. How do I do that?
return B.getValue(); // Doesn't work.
}
}

class B {
int getValue() {
return 1;
}
}

class C {
int getValue() {
return 2;
}
}
如何执行 B 的 getValue ?谢谢。

最佳答案

来自 C 的 mixin 方法从 B 隐藏方法, 所以你不能使用 super直接引用B方法。您需要介绍一种访问它的方法。
您可以做的是在 B 之间放置一个私有(private)重定向功能。类和 C混合应用:

class A extends B with _Helper, C {
int getValue() {
// It's C
super.getValue();
// Now I want to get B's getValue how do it?
return super._getValueFromB();
}
}

class B {
int getValue() {
return 1;
}
}
mixin C {
int getValue() {
return 2;
}
}
mixin _Helper on B {
int _getValueFromB() => super.getValue();
}
由于mixin应用顺序是B,B-with-_Helper,B-with-_Helper-with-C, super B-with-_Helper 父类(super class)的 B ,以及 _getValueFromB将正确访问它。

关于dart - 在 Dart 中,如何调用被 mixin 方法遮蔽的父类(super class)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63461230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com