java 类引用与接口间的赋值

我想问问这位大侠在下面这个程序注释中的“问题一、问题二、问题三、问题四”都是什么意思,各有什么作用呀?为什么注释中的“问题三、问题四”运行不正确呀?谢谢!!程序如下:in... 我想问问这位大侠 在下面这个程序注释中的“问题一、问题二、问题三、问题四”都是什么意思,各有什么作用呀? 为什么注释中的“问题三、问题四”运行不正确呀? 谢谢!!
程序如下:

interface IFEx1
{
}
interface IFEx2
{
}
class CEx implements IFEx1
{
}
public class Interfacesample
{
public static void main(String[] args)
{
CEx c=new CEx();
IFEx1 ifex1=c; //问题一
c=(CEx)ifex1; //问题二
IFEx2 ifex2=c; //问题三
String s=(String)ifex1; //问题四

}
}
展开
 我来答
泷乞儿
2008-12-09 · TA获得超过564个赞
知道小有建树答主
回答量:93
采纳率:0%
帮助的人:136万
展开全部
问题一:IFEx1 ifex1=new CEx();用接口实现类的实例化对象,因为接口是不能直接被实例化的,所以借用该接口的实现类,所以问题一是对的;
问题二:ifex1是接口IFEx1的借用实现类的对象,所以他的真实身份是类CEx类的对象,而等号另外一端是CEx类的实例c,类型相同,所以问题二也是对的;
问题三:c是CEx类的实例,而 ifex2与c没有任何直接关系,所以抛出类型不匹配异常;
问题四:对象转型的一个原则是返回Object的方法可以进行任意的对象类型转换,第二是相关联,比如子类与父类之间的类型,接口与实现类之间的类型都可以转换,但是不相关的类型是不能随意转换的。
百度网友06fd97b
2008-12-09 · TA获得超过221个赞
知道小有建树答主
回答量:681
采纳率:0%
帮助的人:240万
展开全部
问题一:c是声明的CEx类一个引用,ifex1是IFEx1接口引用,因为CEx实现了接口IFEx1,所以ifex1=c是可以通过编译的,他们指向同一个对象,而CEx没有实现IFEx2这个接口,所以问题三那一行是错的。
问题二:将ifex1类型强制转换成c类型
问题四:强制转换错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式