作业帮 > 综合 > 作业

假设A是类B的父类,声明中:A x =new B();有什么意义嘛?为什么B x=new A();就不对了

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/07 11:30:57
假设A是类B的父类,声明中:A x =new B();有什么意义嘛?为什么B x=new A();就不对了
继承是面向对象编程的一个特点,它具有很多优点,例如你说的两个类:如果父类中有属性,成员方法,以及一些可以被子类继承的方法,那么可以通过子类直接调用.在声明中:A x =new B();是创建了一个A类型,但他是一个子类的实例,这样他就能有子类的全部功能,例如:List list=new ArrayList();而B x=new A();错误是涉及到了类型的转换问题,B类是子类,小类型转化成大类型是隐式转换,因此A x =new B();就是把一个子类的实例转换成父类型,属于大类型转小类型,但如果小类型转大类型就需要显示转换,你可以这样B x =(B)new A();但是这只是表示编译可以通过,执行的时候有可能出现类型转化异常.