协变
Java中的协变是指,当发生继承时,子类中重写父类的方法时,可以返回父类方法返回类型的子类型。比如:
class SuperClass{}
class SubClass extends SuperClass{}
class Test{
@Override
public SuperClass make(){
return new SuperClass();
}
}
class SubTest extends Test{
@Override
public SubClass make(){
return new SubClass();
}
}
这种情况下,子类中的make()方法虽然和父类中的make方法返回值不同,但是依旧重写了父类的make(),这就是协变的情形
Interface中的协变和class中的协变
在java中接口和类的协变遵守相同的规则,但这种情形如果运用不当,则会造成混乱。父接口和子接口的返回值和函数签名应始终保持一致,否者会限制接口的灵活性。
总结
当接口的实现和接口的继承同时运用时,应该谨慎,接口应始终保持一致;而类作为接口的实现时,可以适当运用协变。
Java协变:理解与应用实例
本文探讨了Java中的协变概念,包括类和接口中的使用场景,通过例子说明如何在继承和重写方法时保持灵活性,同时强调了接口一致性的重要性及类协变的适用边界。
841

被折叠的 条评论
为什么被折叠?



