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,望大家伙帮帮忙啊.谢谢了! 展开
{
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,望大家伙帮帮忙啊.谢谢了! 展开
展开全部
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对象,要用括弧框起来,这是标准操作
2。在11行Demo d = (Demo)obj;这句中 (Demo)要用括弧框起来是强制类型转换,
如int i=(int)7.5f,
因为是向下类型转换,实际上是类型取值范围缩小,强制把Object对象转换为Demo对象,要用括弧框起来,这是标准操作
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询