A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杜成龙 于 2013-4-19 08:49 编辑
  1. class Demo
  2. {
  3. private int num;
  4. Demo(int num)
  5. {
  6. this.num=num;
  7. }
  8. public boolean equals(Object obj)
  9. {
  10. return this.num==obj.num;
  11. }
  12. }

  13. class ObjectDemo
  14. {
  15. public static void main(String[] args)
  16. {
  17. Demo d1=new Demo(4);
  18. Demo d2=new Demo(6);

  19. System.out.println(d1.equals(d2));
  20. }
  21. }
复制代码
我想比较一下同一个类中两个对象的数值是不是相等,写的程序如上面所示,但编译时出现错误如下:
ObjectDemo.java:10: 错误: 找不到符号
                return this.num==obj.num;
                                    ^
  符号:   变量 num
  位置: 类型为Object的变量 obj
1 个错误

我想请教一下怎样才能改的对,实现要求的功能?谢谢啦~~

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

5 个回复

正序浏览
class Demo

{

private int num;

Demo(int num)

{

this.num=num;

}

public boolean equals(Object obj)//这里相当于将d2传进来了,也就是说Object obj=new Demo(6),在这里完成了向上转型,但是父类中没有num这个成员变量,所以报错,需要向下转型

{
        if(this==obj)//如果传入的是自己,返回false
        return false;
        if(!(obj instanceof Demo))//如果传入的不是Demo类,就返回false
        return false;
        Demo d=(Demo)obj;

    return this.num==d.num;

}

}


class ObjectDemo
{

public static void main(String[] args)
{

Demo d1=new Demo(4);

Demo d2=new Demo(6);


System.out.println(d1.equals(d2));

}

}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
class Demo{

        private int num;

        Demo(int num){

                this.num=num;
        }

        public boolean equals(Object obj){
                Demo d = (Demo)obj;//加个这个,要不然你是让Demo类的对象和Object类的对象比
                return this.num==d.num;
        }

}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
obj  类型是Object    而num是 Demo 的属性    所以要对obj进行类型转换   
回复 使用道具 举报
你写个obj. number,那个Objcte类有这个东西吗?
回复 使用道具 举报
你的Object对象要进行强制转换
代码如下:
  1. class Demo
  2. {
  3.         private int num;
  4.         Demo(int num)
  5.         {
  6.                 this.num=num;
  7.         }
  8.         public boolean equals(Object obj)
  9.         {
  10. //强制转换Object对象为Dome对象               
  11.   return this.num==((Demo)obj).num;
  12.         }
  13. }

  14. class ObjectDemo
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.         Demo d1=new Demo(4);
  19.         Demo d2=new Demo(6);
  20.        
  21.         System.out.println(d1.equals(d2));
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马