数值类型的转换我就不说了,与C/C++的一样。我主要说对象类型。
把子类赋值给父类对象是赋值兼容的,可以直接赋值。如
Typetest tt=new Typetest();
Object oo;
oo=(Object)tt;或者oo=tt;
oo是个Object类型的引用变量,指向了Typetest类型的实例,我们使用的时候oo完全表现为Object类,只能调用Object所具有的成员变量和方法,不过这些仍然是从Typetest实例中调用的。所以把子类型赋给父类型已后只能使用父类型的成员,但是是从子类型实例中调用的,如是有重载的话调用的将是重载后的。
不过父类型赋值给子类型是不允许的,始终会发现运行时异常,不过这才是合理的,马和白马,说白马是马是没有问题的,但是说白马是马就不是个正确的句子。所以父类型赋给子类型是有逻辑错误的。