我有一个抽象类Animal
:
public abstract class Animal {
public Animal eat() {
return this;
}
}
我有一个Cat
类扩展Animal
:
public class Cat extends Animal {
public Cat run() {
return this;
}
public Cat sleep() {
return this;
}
}
有了这个,我希望能够做到这一点:
Cat cat = new Cat();
cat.run()
.eat()
.sleep();
但遗憾的是我不能,因为eat()
方法会返回Animal
的实例,并且sleep()
类中没有Animal
方法。
一个丑陋的解决方案可能是将Animal
方法返回的eat()
实例转换为Cat
类型,如下所示:
Cat cat = new Cat();
((Cat) cat.run()
.eat())
.sleep();
但我不想这样做,因为在我的实际案例中,我正在链接许多方法。
问题:有没有办法强制父类的方法返回子实例?