本帖最后由 shirui8653719 于 2013-08-11 15:35:27 编辑

解决方案 »

  1.   

    1,不调super()是可以的,这本来就是一个隐式的调用,你不自己写 java也会帮你调一次父类的构造函数。2,instanceof  是判断是否包含 ** 对象的,User o = (User) obj; 这句话是多态的体现,向下类型转换
      

  2.   

    可以
    判断obj 是不是User的实例,是就把obj转型成User类型,返回他的id
      

  3.   

    可以 因为上面有个无参的构造方法;
    那是用instanceof判断有obj你要传入的对象是否是User类的类型的
    后面的是强制类型的转换 因为你要当前类下的属性什么的
      

  4.   

            if(obj instanceof User) {==>
            if(obj.getClass() == User.class) {
      

  5.   


      if( obj instanceof User )==>
      
      if( obj != null && User.class.isInstance(obj) )
      

  6.   

    1,一切类都是Object的子类,这里不写super()是可以的,但是也不写他也是存在的
    2,在重写equals的时候,要比较就应该确定是否属于同一类型的事物,所以要用到instanceof来判断下
      

  7.   


    isInstance 方法和 instanceof 等价。
    非空判断在equals方法开头就做过了。
      

  8.   


    isInstance 方法和 instanceof 等价。
    非空判断在equals方法开头就做过了。额,我可能误解了你那个 ==> 的意思……
      

  9.   

    就是说比如我有个SpecialUser类继承自User类
    那么我有个此类的对象su1,其su1.id=123
    并且我有个User类的对象u1,其u1.id=123
    它们是否equals呢?
    我首先应该判断su1是否是User类的,因为SpecialUser是User子类,所以为true
    然后将su1转型成为User型,判断他们的id是否相等
      

  10.   

    u1.equals(su1) 和 su1.equasls(u1) 能同时为true 或 false吗?
      

  11.   

    不用equals也是可以的  public boolean equals(Object obj) {
     if(obj!=null){
     if(obj instanceof User){
     User 0=(User) obj ;
     if(this.id=o.id&&this.email equalse(o.email)&&this.pwd){
     retrn true ;
     }
     }
     }
     return false ;
     }第二行先是判断obj是不是为空(不存在),如果是直接返回false
    第三行判断obj是不是一种类型的如果是就把他强制转化成User类型
     if(this.id=o.id&&this.email equalse(o.email)&&this.pwd)  判断类里面的属性是不是相等
    注意if的作用域
      

  12.   

    u1.equals(su1) 和 su1.equasls(u1) 能同时为true 或 false吗?
    只要子类在继承时没有覆盖equals()方法,这样的判断绝对是互等的
    前面我不是讲了u1.equals(su1)的情形么?
    而su1.equasls(u1)的情形就更简单了,u1当然也是User类的,把它cast成User类等于什么也没有做
    然后,判断su1.id=u1.id,结论还是一样的