Object类

作者: 东风谷123Liter | 来源:发表于2018-07-08 11:49 被阅读0次

    父类是否还有父类???
    有的,叫Object类,也叫根类,我们叫他上帝。是所有对象的超类或父类。

    • 该类总定义了所有类都具有的功能,
    • 隐式的构造方法
      • 所有对对象都具备对象比较功能:equals( 与之比较的对象 ); 是同一个对象就输出true,不同对象输出为flase,当然要用我们自己输出一下。原理就是比较两个对象的地址是否相同(对象1 === 对象2 ),java中一切都是指针,所以 对象1 就是地址!!
      • 如果想实现不一样的比较方法,比如值相等即相等;直接复写equals( Object obj )方法,代码如下:
        class Demo{
        private int num;
        Demo(int num){
            this.num = num;
        }
    
        //重写Object类的equals方法,让值相同,对象就相同;值不同,对象也就不同!!
        public boolean equals(Object obj){ //Object obj = new Demo()    多态!!!!!
            if(!(obj instanceof Demo))    //判断obj对象是否是Demo类
                return false;  //更为合理的做法是用异常处理,抛出异常!!
            Demo d = (Demo)obj;    //类型转换;只能父类对象转换为子类对像。
            return this.num == d.num;
        }
    }
    
    class Person{    //定义一个Person类,测试一下不同类的对象比较
    
    }
    
    class ObjectDemo{
        public static void main(String[] args){
            Demo d1 = new Demo(123);
            Demo d2 = new Demo(23);
            Person p1 = new Person();
            System.out.println(d1.equals(d2));
            System.out.println(d1.equals(p1));   //不同类之间的对象比较,对象一定不同,
            System.out.println(d1.equals(d1));    //所以我们在equals(Object obj)的开头先判断一下是否是同个对象!!!
        }
    }
    
    • toSring类:返回该对象的字符串,任何对象都能转换为字符串,神奇吧!!!
      • 实现:getClass().getName() + ‘@‘ +Integer.toHexString( hashCode() )
      • 字符格式: Demo@7852e922(对象类型+@+哈希值(内存地址))
      • 哈希值的方法:hashCode();出来的值是十进制的要转十六进制:Integer.toHexString(十进制的值)
      • 地址值一般没什么意义;所以一般需要复写toString( )方法!!!
    • getClass( )
      • Class a = new Class(); //定义类文件
      • getClass( ).getName( )
    • hashCode( ) :
      • 返回哈希值!!!

    相关文章

      网友评论

          本文标题:Object类

          本文链接:https://www.haomeiwen.com/subject/lrcouftx.html