协变返回类型

来源:互联网 发布:大众点评数据平台 编辑:程序博客网 时间:2024/06/05 15:05

Java进行方法重写有一下几个要求:
1、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。
2、重写方法不能使用比被重写的方法更严格的访问权限。
但在Java SE5中添加了协变返回类型,它表示子类中的重写方法可以返回基类方法返回类型的子类。

public class CovariantReturn {    /*     * 协变返回类型:     *      表示在子类中的重写方法可以返回基类方法的返回类型的子类     */    public static void main(String[] args) {        print(new Father());        print(new Son());    }    public static void print(Father f){ // 多态        System.out.println(f.method());    }}class Person {    public String toString() {        return "Person";    }}class Student extends Person {    public String toString() {        return "Student";    }}// 方法重写是返回值类型可以不同,是子父类,而且要对应好,子类返回值为子类,父类返回值为父类class Father {    public Person method() {         return new Person();    }}class Son extends Father {    @Override    public Student method() { // 返回类型为Person的子类        return new Student();    }}
原创粉丝点击