假设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();就不对了 展开
 我来答
huyanglinlang
推荐于2018-03-28
知道答主
回答量:28
采纳率:0%
帮助的人:9.5万
展开全部
继承是面向对象编程的一个特点,它具有很多优点,例如你说的两个类:如果父类中有属性,成员方法,以及一些可以被子类继承的方法,那么可以通过子类直接调用。在声明中:A x =new B();是创建了一个A类型,但他是一个子类的实例,这样他就能有子类的全部功能,例如:List list=new ArrayList();而B x=new A();错误是涉及到了类型的转换问题,B类是子类,小类型转化成大类型是隐式转换,因此A x =new B();就是把一个子类的实例转换成父类型,属于大类型转小类型,但如果小类型转大类型就需要显示转换,你可以这样B x =(B)new A();但是这只是表示编译可以通过,执行的时候有可能出现类型转化异常。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式