A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

假设A类型是父类,B类型是子类,B继承A
那么一下两句话都做了些什么?
1.A a = new B();
2.B b = (B) a;
我的理解就是:
1.首先创建了A类型的引用 a,然后创建B的一个对象,最后把引用a指向B的对象
2.首先创建一个B类型的引用b,然后把A的引用a强制转换成B类型,最后将B类型引用b指向B类型引用a
我想问下大家我的理解对吗?
因为现在我已经被这个问题搞得有点晕了

11 个回复

倒序浏览
我也说一下我的理解:

1:先创建了B对象  然后把对象B的地址 传给了引用A  并对A设置了访问权限 只能访问B中继承A的部分。

2:A想访问B中的所有功能 就要向申请变成B(强制转换变成B)。
回复 使用道具 举报
父类引用指向子类对象 -----------之后是个强转, 多态会学到的, 需要搞明白,调方法是调子类的,其他是父类的,  不要拉下, 不然后面 玩方法的时候,转不来, a equals(b);
回复 使用道具 举报
我也晕了啊
回复 使用道具 举报
最后将B类型引用b还是指向了B类型对象new B( )
回复 使用道具 举报
和基本数据类型的强制转换一个道理,类似byte b =(byte)a;当需要使用子类特有方法的时候才使用
回复 使用道具 举报
我的理解是:第一个是父类引用指向子类对象,第二个是再将a强转为B类型的
回复 使用道具 举报
请指教 发表于 2015-11-17 22:22
我也说一下我的理解:

1:先创建了B对象  然后把对象B的地址 传给了引用A  并对A设置了访问权限 只能访问B ...

我想我大概看懂了你的意思,不过你的A大小写好像有点问题
回复 使用道具 举报
迷茫不堪的年纪 发表于 2015-11-17 22:45
父类引用指向子类对象 -----------之后是个强转, 多态会学到的, 需要搞明白,调方法是调子类的,其他是父类的 ...

一言惊醒梦中人!!!!
谢谢指点
回复 使用道具 举报
继承是面向对象编程的一个特点,它具有很多优点,例如你说的两个类:如果父类中有属性,成员方法,以及一些可以被子类继承的方法,那么可以通过子类直接调用。在声明中:A x =new B();是创建了一个A类型,但他是一个子类的实例,这样他就能有子类的全部功能,例如:List  list=new ArrayList();而B x=new A();错误是涉及到了类型的转换问题,B类是子类,小类型转化成大类型是隐式转换,因此A x =new B();就是把一个子类的实例转换成父类型,属于大类型转小类型,但如果小类型转大类型就需要显示转换,你可以这样B x =(B)new A();但是这只是表示编译可以通过,执行的时候有可能出现类型转化异常。
回复 使用道具 举报
Phy_zhang 发表于 2015-11-19 11:36
一言惊醒梦中人!!!!
谢谢指点

恩, 好好学习
回复 使用道具 举报
先来看看-。-
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马