返回协变类型:父类有一方法返回一个类型的对象,其子类在重写父类的这个方法时可以不用和父类返回一样的类型,而是可以返回父类返回类型的子类型
- 可以看看下面的例子
public class Test {
public static void main(String[] args) {
Father father = new Father();
Son son = new Son();
Person person= father.getInfo();
Student student = son.getInfo();
person.name();
student.id();
}
}
class Father{
public Person getInfo(){
return new Person();
}
}
class Son extends Father{
//这里重写父类的getInfo方法,但是返回值可以与父类不一样,可以返回父类的返回值的子类
@Override
public Student getInfo() {
return new Student();
}
}
class Person{
public void name(){
System.out.println("Li Hua");
}
}
class Student extends Person{
public void id(){
System.out.println("0000001");
}
}