下面是毕老师讲的关于调用object中比较方法的程序
class Demo
{
private int num;
Demo(int num)
{
this.num = num;
}
public boolean equals(Object obj)//Object obj = new Demo();Object obj = new Persion();多态
{
Demo b = (Demo) obj;
return this.num == b.num;
}
}
class Persion
{
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1 = new Demo(4);
Demo d2 = new Demo(6);
Persion p = new Persion();
System.out.println(d1.equals(p));
进行编译的时候没问题,运行的时候报错,persion无法转换为demo。问题来了?
问:定义的Object obj = new Persion();说明obj虽然是对象persion中的,但它所属类是Object,Demo又继承了Object,理论上obj可以转换成Demo啊?
为什么说persion无法转换为demo?附图说明我的想法。大神帮我看看我那儿理解错了~
如图:Object obj = new Demo();说明obj属于阴影部分的,类属于Object但也是Demo中的一部分,所以可以转换成Demo。
Object obj = new Persion();说明obj也属于阴影部分,也是Demo中的一部分为什么不能转换成Demo呢?
|
|