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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© abc张强8 中级黑马   /  2014-6-30 20:42  /  1276 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 abc张强8 于 2014-7-1 23:06 编辑

假设A是一个接口,B是实现这个接口的类。有代码:A a=new B(); 为...假设A是一个接口,B是实现这个接口的类。有代码:A a=new B(); 为什么写成这样,而不直接写成:B a=new B(); 那样有什么好处?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

9 个回复

倒序浏览
面相接口编程,多态嘛,如果一个接口有很多个实现类,这样写接受的范围更广!
回复 使用道具 举报
有些东西需要我们先记住,等你记得多了自然就明白为什么了,
回复 使用道具 举报
多态   增加了扩展性
回复 使用道具 举报
父类引用指向子类对象
回复 使用道具 举报
典型的多态哦,接口的引用指向子类的对象,实现多个类时候这样做可以提高程序的扩展性;不过也可以像你那样做
回复 使用道具 举报
这个事java的多态表现形式,就像是一只猫,我们可以说猫是动物,但是反过来我们说动物是猫就明显不对了,具体可以去查查多态,我也给你说不太清除,打字太费力了
回复 使用道具 举报
houyudong 发表于 2014-6-30 22:06
这个事java的多态表现形式,就像是一只猫,我们可以说猫是动物,但是反过来我们说动物是猫就明显不对了,具 ...

这回我看懂啦
回复 使用道具 举报
cat73 黑马帝 2014-7-1 23:12:05
9#
B实现了A C也实现了A D也实现了A
A内定义了test方法
那你就可以简单地
A b = new B();
A c = new C();
A d = new D();
test(b);
test(c);
test(d);

//只需要一个方法就可以同时接受三种不同的数据类型并调用内部方法
void test(A a){
a.test();
}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
你多看一下多态   就明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马