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)?"是同一个人":"不是同一个人");
}
}
顶层父类Object
猜你喜欢
转载自blog.csdn.net/qq_42475914/article/details/100755802
今日推荐
周排行