版权声明:未经允许,禁止转载. https://blog.csdn.net/Loongstyle/article/details/82973980
文章目录
Object类的概述
- A:Object类概述
- 类层次结构的根类
- 所有类都直接或者间接的继承自该类
- B:构造方法
- public Object()
- 回想面向对象中为什么说:
- 子类的构造方法默认访问的是父类的无参构造方法
1.1 Object类的hashCode()方法
- A:案例演示
- public int hashCode()
- a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
- b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
1.2 Object类的getClass()方法
- A:案例演示
- public final Class getClass()
- a:返回此 Object 的运行时类。
- b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
- public String getName()
1.3 Object类的toString()方法
- A:案例演示
- public String toString()
- a:返回该对象的字符串表示。
-
public Stirng toString() { return name + "," + age; }
- b:它的值等于:
- getClass().getName() + “@” + Integer.toHexString(hashCode())
- c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
- b:它的值等于:
- B:最终版
- 自动重写 Alt + Shift +S 再加 V
1.4 Object类的equals()方法
- A:案例演示
- a:指示其他某个对象是否与此对象“相等”。
- b:默认情况下比较的是对象的引用是否相同。
- c:由于比较对象的引用没有意义,一般建议手动重写该方法。
因为在开发中,我们通常比较的是对象中的属性值,我们认为相同属性,是同一个对象 - d:手动重写时,向上转型了。想使用子类属性要先向下转型。
基本数据类型用==比较, 引用数据类型String用equals比较
@Override //重写equals方法,所以形参obj不能改变 this相当于s1, s相当于s2 public boolean equals(Object obj) { //向上转型 //s1.equals(s2); s1调用equals,s2传给obj s2=new Student()相当于Object obj = new Student(); //构成了父类引用指向子类对象,多态,(向上转型了),多态弊端:无法访问子类特有的属性name (obj.name) //所以想要使用子类特有的属性和行为,比如name,需要向下转型 Student s = (Student)obj; //向下转型 return this.name.equals(s.name) && this.age==s.age; //前面String类型要转型,后面int基本数据类型用==
- B:==号和equals方法的区别
- ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
- equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性