菜鸟请问 — 关于重写eqeasl()方法的一些有关问题

初学者请教 — 关于重写eqeasl()方法的一些问题
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object o) {// 这个地方把t_p2传给object o是不是向上转型?是传的引用地址吗?
boolean temp = true; // 
Person p1 = this;//这里是把t_p1的引用地址赋给p1吗?
if (o instanceof Person) {// 判断Object类对象是否是Person的实例
// 如果是Person类实例,则进行向下转型
Person p2 = (Person) o;//这里p2引用的地址是不是还是t_p2?
if (!(p1.name.equals(p2.name) && p1.age == p2.age)) {//这里完全看不懂
temp = false;
System.out.println("成立");//为什么这句话看不见效果?
}
} else {
// 如果不是Person类实例,则直接返回false
temp = false;
System.out.println("不成立");//为什么这句话看不见效果?
}
return temp;
}
}
class TestOverEquals2 {
public static void main(String[] args) {
Person t_p1 = new Person("张三", 25);
Person t_p2 = new Person("张三", 25);
// 判断p1和p2是否是同一个对象,如果是,则表示是一个人,反之,则不是
System.out.println(t_p1.equals(t_p2) ? "是同一个人!" : "不是同一个人");
}
}


关键是引用地址没搞懂是怎么传过去传过来的,请帮我注释一些,感谢。
另可否帮我画个内存图,再次感谢。
------解决思路----------------------
你的问题真的太多了
1.  这个地方把t_p2传给object o是不是向上转型?是传的引用地址吗?
     是的
2.  这里是把t_p1的引用地址赋给p1吗?
     是的,this是指向当前对象的引用,t_p1调用的则this指向的就是t_p1
3.  这里p2引用的地址是不是还是t_p2?
     是的,是同一个对象,引用类型不管怎么变,其实都还是同一个对象
4.  这里完全看不懂
      这个判断最外面又加了一个!,所以弄的有点混乱,其实就是判断 两个对象的name或者age至少有一个不相同
5.  为什么这句话看不见效果?
     if条件不成立,当然看不到效果了


另外我想说的是你的程序判断逻辑是有问题的,具体怎么修改我就不说了,你自己想想吧。