gpt4 book ai didi

java - 继承 - 重写变异方法?

转载 作者:行者123 更新时间:2023-12-03 07:34:48 25 4
gpt4 key购买 nike

那么,假设我有以下类(class):

abstract class Foo{
.
.
.
public void setKey(FooKey key){
this.key = key;
}
}

final class Bar extends Foo{
.
.
.
@Override
public void setKey(BarKey key){ // Can't do this?
super.setKey(key);
}
}

在上面的示例中,BarKeyFooKey 的子类。在这里,我想确保为 Bar 设置的键是 FooKey 的特定子类(即 BarKey)。我该怎么办?我是否让这变得过于复杂?有没有更好的设计方法?

最佳答案

这是不正确的,因为您使子类比父类(super class)更具限制性:父类(super class)可以设置任何类型的 FooKey,但子类只接受 BarKey。

为了做到这一点,您需要使父类(super class)通用:

abstract class Foo<K extends FooKey> {
private K key;

public void setKey(K key){
this.key = key;
}
}

final class Bar extends Foo<BarKey> {
}

关于java - 继承 - 重写变异方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8386297/

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