谢谢你的回复 首先第一个,照你的理论如果有一个几百个类继承链,如果new最底层类实例,岂不会创建几百个对象。。可以说得详细点吗?不是很明白。 例如再有一个类public Teacher:IUser { public int insert() { //... } } IUser iuser = new User() as IUser;//这里不是在堆中为User分配一个实例吗? iuser.insert(); IUser iteacher = new Teacher() as IUser;//然后这里,不是在堆中为Teacher分配一个实例吗? iteacher.insert();
关于上面的例子的继承关系以及内存分配是这样的吗?如下图:由于User和Teacher继承于IUser, 所以new User() as IUser 以及 new Teacher() as Iuser 进行隐式转换为Iuser时可以转换成为他们继承接口?是这样理解的吗?
由于User和Teacher继承于IUser, 所以new User() as IUser 以及 new Teacher() as Iuser 进行隐式转换为Iuser时可以转换成为他们继承接口,补充上面:而不会为他们继承的接口分配内存空间?是这样理解的吗?望各位大侠帮忙解答一下!
这里说的转换是IUser iuser = new User() as IUser;是这个
这是继承带来的特性。
首先第一个,照你的理论如果有一个几百个类继承链,如果new最底层类实例,岂不会创建几百个对象。。可以说得详细点吗?不是很明白。
例如再有一个类public Teacher:IUser
{
public int insert()
{
//...
}
}
IUser iuser = new User() as IUser;//这里不是在堆中为User分配一个实例吗?
iuser.insert();
IUser iteacher = new Teacher() as IUser;//然后这里,不是在堆中为Teacher分配一个实例吗?
iteacher.insert();
所以new User() as IUser
以及
new Teacher() as Iuser
进行隐式转换为Iuser时可以转换成为他们继承接口?是这样理解的吗?
所以new User() as IUser
以及
new Teacher() as Iuser
进行隐式转换为Iuser时可以转换成为他们继承接口,补充上面:而不会为他们继承的接口分配内存空间?是这样理解的吗?望各位大侠帮忙解答一下!