执行以下代码:
class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void main(String args[]) { Mammal m; Dog d=new Dog(); Cat c=new Cat(); m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; } }
这个程序不能正常运行,因为在主函数里d=m;这句话不符合Java的规则,
在继承中,基类不能对子类的对象赋值,而子类可以对基类的对象赋值,
而且,非继承关系的两个类再赋值是也应该先进行强制转化,比如:d=c;,
强制转化也不是每次都可以成功的。可以使用instanceof运算符判断一个对
象是否可以转换为指定的类型,如果可以,则继续进行。
时间: 2024-10-22 02:30:37