那么,假设我有以下类(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);
}
}
在上面的示例中,BarKey
是FooKey
的子类。在这里,我想确保为 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/