假设A是类B的父类,声明中:A x =new B();有什么意义嘛?为什么B x=new A();
假设A是类B的父类,声明中:Ax=newB();有什么意义嘛?为什么Bx=newA();就不对了...
假设A是类B的父类,声明中:A x =new B();有什么意义嘛?为什么B x=new A();就不对了
展开
1个回答
展开全部
继承是面向对象编程的一个特点,它具有很多优点,例如你说的两个类:如果父类中有属性,成员方法,以及一些可以被子类继承的方法,那么可以通过子类直接调用。在声明中:A x =new B();是创建了一个A类型,但他是一个子类的实例,这样他就能有子类的全部功能,例如:List list=new ArrayList();而B x=new A();错误是涉及到了类型的转换问题,B类是子类,小类型转化成大类型是隐式转换,因此A x =new B();就是把一个子类的实例转换成父类型,属于大类型转小类型,但如果小类型转大类型就需要显示转换,你可以这样B x =(B)new A();但是这只是表示编译可以通过,执行的时候有可能出现类型转化异常。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询