我在Comparable接口的实现类Student中重写compareTo后compareTo的参数类型是Student,可是我在Demo中却能够在Comparable接口的实例化对象传递参数为Comparable类型的compareTo方法,为什么这样不会报错?
package fan;
public class Student implements Comparable<Student>{
public int compareTo(Student o){
return 0;
}
}
package fan;
public class Demo {
public static void main(String[] args) {
Student s1=new Student();
Comparable ss1=s1;
ss1.compareTo(ss1);
}
}
因为你虽然定义的是ss1,但等于s1后,实际ss1指向的对象是个Student对象,调用compareTo时,由于类的多态性,compareTo函数自动会调用Student的compareTo函数的
不应该是父类的引用指向子类的对象吗?这样写不就成了父类的引用传递给子类的引用?