你的理解是正确的。
因为equals(Object obj)
指示其他某个对象是否与此对象“相等”。所以即可以接受Demo类型,也可以接受Person类型。你的不同结果主要是
在第13行的代码13. Demo d = (Demo)obj;//强制类型转换(体现多态性),下面详解
1:System.out.println(d1.equals(p));为什么这里通不过里,因为方法equals里面传的是p这个对象,p是属于Person类的一个对象,由于你上面代码是Demo d = (Demo)obj; 不可能将p这个对象强转成Demo类型。
public boolean equals(Object obj)//先是复写了Object的equals方法,再有多态Object obj = new Demo();