执行以下代码:

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运算符判断一个对

象是否可以转换为指定的类型,如果可以,则继续进行。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2021-04-13
  • 2022-12-23
  • 2022-01-21
  • 2021-07-30
猜你喜欢
  • 2021-08-05
  • 2022-01-18
  • 2021-12-03
  • 2021-12-26
  • 2021-08-10
相关资源
相似解决方案