协变返回类型

javaSE5中新增的一种返回类型,在子类中的被覆盖方法可以返回父类方法的返回类型的某种子类型

代码表示为:

//类A
class A{
    public String toString(){
        return "A";
    }
}
//A类的子类
class As extends A{
    public String toString(){
        return "As";
    }
}
//B类
class B {
    //一个返回A类的方法
    A process(){
        return new A();
    }
}
//B类的子类
class Bs extends B{
    //一个返回A类子类的被覆盖方法
    As process(){
        return  new As();
    }
}

public class XieBian {

    public static void main(String[] args) {
        B b = new B();
        A a = b.process();
        System.out.println(a);
        b = new Bs();
        //此时调用方法返回的是A类的子类
        a = b.process();
        System.out.println(a);

    }


}

在B类中有一个process方法返回的是A类的对象,在B类的子类中重写了process方法并且返回的是A类的子类对象。运行结果如下:

原文地址:https://www.cnblogs.com/xuhan74520/p/13880501.html