Java String工具类中的equals方法原理

JAVA的String工具类提供了equals方法,public boolean equals(Object anObject),入参是Object类,但是使用时入参可以直接是String类的对象,是什么原因?

package cn.it.test2;

public class StudentDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s1 = "HelloWorld";
        String s2 = "Hello";
        System.out.println(s1.equals(s2));
    }
}

输出:false

问题:
s1和s2都是String类的对象,语句System.out.println(s1.equals(s2))中,使用了String类中的equals方法,String工具类中的equals方法入参是Object类对象,为什么入参是String类对象时也可以?传String类对象时向上转型为Object类了吗?

Object是所有类型的基类,所以给string没问题。比较的逻辑是按照顺序,一个字符一个字符比较。

equals是Object类的方法,Object本身就表示任意类型,当然也包括String类型,不同的类要用equals方法必须进行重写,String类是默认比较字符串内容。

方法入参如果是父类时,如果传父类引用指向的子类对象时,不因该是Object obj =new String()么?然后用obj作为equals的入参吗?