共変戻り値
検証
- オーバーライドしたメソッドの戻りは、サブクラスの型でもよい
- 共変戻り値?
つまりこういうこと。
戻り値で使うクラス
public class BeanA {} public class BeanB extends BeanA {}
オーバーライドするクラス
public class RiderA { BeanA getBean(){ return new BeanA(); } } public class RiderB extends RiderA{ @Override //つまりオーバーライドしている BeanB getBean(){ return new BeanB(); } }
実行
public class Test { public static void main(String[] args) { RiderA rider = new RiderB(); BeanA bean = rider.getBean(); System.out.print(bean.getClass()); } }
結果
class hoge.override2.BeanB