黑马程序员技术交流社区
标题:
各位大侠,帮忙看下这个程序问题,谢谢~~
[打印本页]
作者:
杜成龙
时间:
2013-4-18 18:12
标题:
各位大侠,帮忙看下这个程序问题,谢谢~~
本帖最后由 杜成龙 于 2013-4-19 08:49 编辑
class Demo
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean equals(Object obj)
{
return this.num==obj.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));
}
}
复制代码
我想比较一下同一个类中两个对象的数值是不是相等,写的程序如上面所示,但编译时出现错误如下:
ObjectDemo.java:10: 错误: 找不到符号
return this.num==obj.num;
^
符号: 变量 num
位置: 类型为Object的变量 obj
1 个错误
我想请教一下怎样才能改的对,实现要求的功能?谢谢啦~~
作者:
高梦晓
时间:
2013-4-18 18:18
你的Object对象要进行强制转换
代码如下:
class Demo
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean equals(Object obj)
{
//强制转换Object对象为Dome对象
return this.num==((Demo)obj).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));
}
}
复制代码
作者:
钟林杰
时间:
2013-4-18 18:21
你写个obj. number,那个Objcte类有这个东西吗?
作者:
沈浩
时间:
2013-4-18 18:24
obj 类型是Object 而num是 Demo 的属性 所以要对obj进行类型转换
作者:
U芽Lady
时间:
2013-4-18 18:25
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;
}
}
作者:
晓风妮子
时间:
2013-4-18 18:27
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));
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2