顶层父类Object

package javaprac;
/*
 * @Object
 * 1.概念:多继承中的顶层父类,如果一个类在定义时没有声明父类,则会把Object作为它的顶层父类
 * 因此,Object是所有类的直接或间接父类
 * 2.Object类中的方法:
 * 		public boolean equals(Object obj) 	//判断两个对象是否有相同的引用
 * 		public Class getClass()				//返回对象所属的类
 * 		public int hashCode()				//返回对象内存地址的哈希值,用16进制表示
 * 		public String toString()			//返回:对象所属类名@返回一个int型的对象内存地址的哈希值,用十六进制表示
 * 3.这些顶层父类Object中定义好的方法可以在子类中被重写,一旦重写,则调用子类重写的方法
 * 4.顺便整理一下对象创建时的内存分配:
 * 	比如有Person类创建实例对象o,实例化时为对象开辟段内存,堆内存,
 *  在堆内存里存放对象的具体内容(包括成员变量和成员方法),在栈内存里存放这片堆内存空间的首地址(即栈空间指向堆空间)
 **/
class person1{
	private String name;
	private int age;
	public person1(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public String toString() {				//重写toString方法
		return "姓名:"+name+" 年龄:"+age;
	}
	public boolean equals(Object obj) {		//重写equals方法
		if(obj==null) 	return false;		//传入对象不存在,则返回false
		if(getClass()!=obj.getClass())  return false;  //两个对象不是同一个类中的,返回false
		if(this!=obj)  	return false;		//两对象地址不同时,返回false
		person1 per = (person1)obj;			//将量对象的类型转换为一致
		return name.equals(per.name)&&age==per.age;	//判断两对象的内容是否相同
	}
}

public class object_Demo {

	public static void main(String[] args) {
		person1 o = new person1("LiLi",19);
		person1 c = new person1("HaHa",19);
		System.out.println(o.toString());
		System.out.println(c.toString());
		System.out.println(o.equals(c)?"是同一个人":"不是同一个人");
	}
}

发布了61 篇原创文章 · 获赞 61 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42475914/article/details/100755802