Java中的多态对象问题。

[复制链接]
查看11 | 回复2 | 2010-10-15 20:57:39 | 显示全部楼层 |阅读模式
class A {}
class B extends A {}
class C extends B {

public static void main(String [] args) {

Aa=newC ();

}
}

如果我们对对象a 进行类型转换,(A)a
和(B)a这样两种,有什么作用和区别啊?

回复

使用道具 举报

千问 | 2010-10-15 20:57:39 | 显示全部楼层
强制转换为A类型,a引用只能调用A类里面的定义的方法,如果B或者C类里面有新的方法,这时候是调用不到的。强制转换为B类型一样,只能调用B类里面定义的方法,如果C类有新的方法是调用不了的。至于作用,这就仁者见仁智者见智了,现在不少人在谈什么“面向接口编程”,“面向抽象编程”,也就用在这个上面了。
可以这么说,一个人告诉你有这么一个东西存在,他能满足你想要的东西,但是至于他怎么达到你的要求,不需要你关注,有具体的实现就行。再具体点的话:A类你可以看做接口或者抽象类,有个方法factory(...);B类实现了这个方法,C类也实现了这个方法,但是C实现的功能强大,所以你就可以使用 Aa=newC ();如果B类的实现已经满足你的需要
回复

使用道具 举报

千问 | 2010-10-15 20:57:39 | 显示全部楼层
就 狗,浦乳动物,动物 来比喻.生物研究所需要你提供他们一些动物.你可以把狗牵去,也可以是其他的,只要是动物(狗猫羊都是动物),他们之所以没有需要具体的动物,是因为他们不需要特定的生物特点.但如果他们指定了需要的生物是狗,那你就不可以把所有称得上动物的东西牵过去.作用是: 如果生意人只收人民币(C 类),他将会损失一部分的利润,但如果他是钱都收(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行