Java中Object类的使用理解

版权声明:未经允许,禁止转载. 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:最终版
    • 自动重写 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方法比较的是对象中的属性

猜你喜欢

转载自blog.csdn.net/Loongstyle/article/details/82973980