JAVA中关于Object的问题.麻烦进来看看.谢谢!

classDemo{privateintnum;Demo(intnum){this.num=num;}publicbooleanequals(Objectobj){Dem... class Demo
{
private int num;

Demo(int num)
{
this.num = num;
}
public boolean equals(Object obj)
{
Demo d = (Demo)obj;
return this.num == d.num;
}
}

class ObjectDemo2
{
public static void main(String[] args)
{
Demo d1 = new Demo(5);
Demo d2 = new Demo(5);
boolean b = d1.equals(d2);
System.out.println("b="+b);
}
}

1,视频上说在第11行,也就是Demo d = (Demo)obj;这句必须要这样强制转换,否则会报错,因为Object没有定义num属性,而原先在第9行这句是,boolean compare(Demo d)则不需要强制转换.我就纳闷儿了,为什么Object没有定义num属性,而Demo却定义了呢?

2,在11行Demo d = (Demo)obj;这句中 (Demo)为什么要用括弧框起来?括弧这里是什么意思?括弧在这里有什么特殊含义?这个括弧我是完全没搞明白啊!

3,望大家伙帮帮忙啊.谢谢了!
展开
 我来答
弘菀柳XI
2011-10-21 · TA获得超过1052个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:88.7万
展开全部
1.实际上所有类都继承自Object类,public boolean equals(Object obj)这个方法是Demo类覆盖Object的同名方法,你当然不能改变方法参数的类型,Demo类继承了Object所有的属性和方法,num属性是Demo自己的扩展属性
2。在11行Demo d = (Demo)obj;这句中 (Demo)要用括弧框起来是强制类型转换,
如int i=(int)7.5f,
因为是向下类型转换,实际上是类型取值范围缩小,强制把Object对象转换为Demo对象,要用括弧框起来,这是标准操作
wufang1023
2011-10-21 · 超过10用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:39.9万
展开全部
如果写成这样Demoobj那它就变意思了…… (Demo)obj 这是强制转换的固定语法形势 特别是括弧里是 自定义的 “类”类型的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式