gpt4 book ai didi

dart - 我可以在子类中重新定义父类(super class)的属性吗? (也许是C#的新修饰符?)

转载 作者:行者123 更新时间:2023-12-03 04:11:51 26 4
gpt4 key购买 nike

狗窝有一只狗。

KennelWithPlayground(Kennel类型)具有DogWithABall(Dog类型),不能仅具有普通Dog。

我希望能够像对待普通狗一样对待任何类型的狗窝。

因此,我想在子类中重新定义父类(super class)的属性。新属性将是该属性的父类(super class)的子类。在Dart中这可能吗? (可能类似于C#中的“new”修饰符)。还是有另一种方法来实现这一目标?

以下代码不起作用,因为在KennelWithPlayground类中,DogWithABall不是Dog的有效替代。

class Dog {
String get bark => "woof";
}

class DogWithBall extends Dog {
String get ballAction => "boing";
}

abstract class Kennel {
Dog dog;
}

class KennelWithPlayground implements Kennel {
DogWithBall dog; //**invalid override**
KennelWithPlayground(DogWithBall dog);
}

void processKennel(Kennel kennel){
kennel.dog.bark;

if (kennel is KennelWithPlayground)
print(kennel.dog.ballAction);
else
print("Bored dog");
}

最佳答案

可能,但是仅当该属性没有 setter 时才可以。

class Foo {
final num value;
Foo(this.value);
}

class Bar implements Foo {
final double value;
Bar(this.value);
}

关于dart - 我可以在子类中重新定义父类(super class)的属性吗? (也许是C#的新修饰符?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57374459/

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