1,Java.lang.Object类有哪些方法,什么时候需要重写这些方法?
2,hascode()方法有什么作用?
3,接口和抽象类的区别?

解决方案 »

  1.   

    Java.lang.Object有tostring() , equals  等
      

  2.   

    1、有toString()、equal()等等。
    2、不知道。
    3、抽象类可以只实现部分方法,接口则必须实现其全部方法;抽象类的方法可以有抽象方法,也可以有普通方法,接口里的方法必须是抽象方法;抽象类的方法的访问权限可以多种,接口的方法的访问权限只能是public;抽象类的子类只能继承一个抽象类,而实现接口的类可以同时实现多个接口,等等。我只知道这些了。
      

  3.   

    刚学完corejava的基础部分,正好趁热解答你的问题:类中常需要重载的方法有:toString(), equals(), hashCode(), clone(), compareTo()其中后两个需要implements接口,中间3个是Object中的方法,不过clone是protected,需要使用时改写成public。toString()应该每个类都有,即便不准备输出什么内容,也应该写上类的结构信息,便于其他程序员对你的类做logequals()和hashCode()是一套的,一改则都改,且要对应。比如你以类中“年龄,工资”作为比较对象,那么的你的hashCode算法也必须和这2个量相关,通常的算法就是将不同的质数与字段做乘积和,例如:return 11*age+13*lohn; 如果不重写,使用Object默认的话,那么equals和hashCode都是以内存地址做依据的。clone()主要用于拷贝自身,通常不用写代码,直接改写成public和函数返回类型,然后调用super.clone(xx)就可以了,如果类中包含其他对象,需要深度拷贝,那么要自己写代码,将这些对象手动拷贝过去,比如:
    MyClass result = super.clone();
    result.Date = this.Date.clone();
    return result;compareTo()用于比较,根据你的算法,依据不同字段,比较类对象的大小,返回1, 0, -1。很多函数会自动调用它,比如Arrays.sort();接口和抽象类的区别,我觉得主要是两点,一个是抽象类里还可以有非抽象的方法,虽然抽象类仍无法实例化,但是其子类可以,也就是说这些非抽象函数仍可以被多态调用,这也是抽象类为什么没有完全被接口取代的原因。接口就是相反了,不过接口也有一个优势是抽象类无法比拟,就是类可以继承多个接口,而抽象类和普通类一样,只能继承一个,所以接口可以解决多重继承问题。
      

  4.   

    hashCode();
      每一个对象有一个唯一hashcode;是唯一的,一般情况下是和equals();情况类似的,
      

  5.   

    每一个对象有唯一的HashCode? 这个是哪里看来的啊?
      

  6.   

    HashCode()就是为了不唯一才做的方法,不是唯一的
    其实散列值原先就是为了检索用的一个值
      

  7.   

    hascode() 方法主要用于在hashset或者hashmap等以hash方式检索对象的集合里。每个对象有唯一的hashcode这种说法是不准确的,不过应该尽量避免大量重复的hashcode,这样可以提高检索的效率(hashcode冲突的解决办法有很多,学过数据结构的都该知道)
      

  8.   

    1.toString(), equals(), hashCode等.
    2.hascode()方法主要用于在hashset或者hashmap等以hash方式检索对象的集合里.
    3.一个是抽象类里可以有非抽象的方法,虽然抽象类无法实例化,但是他的子类可以,也就是说这些非抽象函数可以被多态调用.
    类可以继承多个接口,而抽象类和普通类一样,只能继承一个.
      

  9.   

    看看jdk阿,
    很有帮助地饿
      

  10.   

    equals(Object obj) 
    getClass()
    hashCode() 
    notify() 
    notifyAll() 
    toString() 
    wait() 
    wait(long timeout)
    notify()
    notifyAll()
    wait(long timeout, int nanos)