java 程序题目

interfaceIFace{}classCFaceimplementsIFace{}classBase{}publicclassObRefextendsBase{pub... interface IFace{

}
class CFace implements IFace {

}
class Base {

}
public class ObRef extends Base {
public static void main (String[] args) {
ObRef ob = new ObRef();
Base b = new Base();
Object o1 = new Object();
IFace o2 = new CFace();
o1 = 02; //可以编译通过
b = ob; //可以编译通过
ob = b; //不可以编译通过
o1 = b;//可以编译通过

}
}
IFace o2 = new CFace(); 接口也能new?接口不是特殊抽象类吗?为什么可以new ?还有为什么ob=b不能编译通过? 其他能编译通过的原因是什么 希望大神教我 我是菜鸟
展开
 我来答
莔囧冏冋冂
2012-05-30 · TA获得超过642个赞
知道小有建树答主
回答量:411
采纳率:100%
帮助的人:557万
展开全部
一句话:父类或者父接口的引用,可以指向子类对象。反过来就不行。

Object是所有类的父类。

接口并不能new 对象,但是可以用接口的引用指向实现了此接口的类的对象。

此时,只可以对o2调用接口IFace 中定义的方法。

----------------

上面全是多态的问题,java面向对象的核心你还没理解。
追问
o1 = 02 这句话的意思是用o2引用指向o1还是反过来的啊
追答
= 赋值语句,把后面的赋值给前面,所以是使o1引用指向了O2所指向的对象。
bd9006
2012-05-30 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.7亿
展开全部
还有为什么ob=b不能编译通过?

通俗地从范围说,b的范围多、ob的范围少。就像容器一样,多给少,就溢出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gongxweiforu
2012-05-30
知道答主
回答量:25
采纳率:0%
帮助的人:6.6万
展开全部
IFace o2 = new CFace();
这不是new 接口 这是一种多肽===>"父类接口--子类对象"

至于ob=b不通过 是因为一个类的构造方法是私有的 即使继承也会出错的 好好体会吧
追问
o1 = 02 这句话的意思是用o2引用指向o1还是反过来的啊
追答
java当中的"="是赋值的意思  是将后面的内容赋值给前面的变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式