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; //问题四
}
} 展开
程序如下:
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; //问题四
}
} 展开
展开全部
问题一:IFEx1 ifex1=new CEx();用接口实现类的实例化对象,因为接口是不能直接被实例化的,所以借用该接口的实现类,所以问题一是对的;
问题二:ifex1是接口IFEx1的借用实现类的对象,所以他的真实身份是类CEx类的对象,而等号另外一端是CEx类的实例c,类型相同,所以问题二也是对的;
问题三:c是CEx类的实例,而 ifex2与c没有任何直接关系,所以抛出类型不匹配异常;
问题四:对象转型的一个原则是返回Object的方法可以进行任意的对象类型转换,第二是相关联,比如子类与父类之间的类型,接口与实现类之间的类型都可以转换,但是不相关的类型是不能随意转换的。
问题二:ifex1是接口IFEx1的借用实现类的对象,所以他的真实身份是类CEx类的对象,而等号另外一端是CEx类的实例c,类型相同,所以问题二也是对的;
问题三:c是CEx类的实例,而 ifex2与c没有任何直接关系,所以抛出类型不匹配异常;
问题四:对象转型的一个原则是返回Object的方法可以进行任意的对象类型转换,第二是相关联,比如子类与父类之间的类型,接口与实现类之间的类型都可以转换,但是不相关的类型是不能随意转换的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询