面试题答案
一键面试class Animal {
Animal getInstance() {
return new Animal();
}
}
class Dog extends Animal {
@Override
Dog getInstance() {
return new Dog();
}
}
在上述代码中,Animal
类有一个 getInstance
方法返回 Animal
类型实例。Dog
类继承自 Animal
类并重写了 getInstance
方法,但是返回类型为 Dog
,这就是协变返回类型。关键代码为 Dog
类中的 Dog getInstance()
方法,它允许子类重写父类方法时返回比父类方法返回类型更具体的类型,增强了代码的灵活性,调用者可以直接获得更具体的 Dog
实例而无需额外的类型转换。