永发信息网

C#中基类和派生类之间的类型转换的内部原理是什么

答案:3  悬赏:70  手机版
解决时间 2021-03-26 15:32
C#中基类和派生类之间的类型转换的内部原理是什么
最佳答案
内部原理?不就是隐式转换吗简单来说,派生类一定可以隐式转换为基类,因为派生类是继承基类过来的,所有基类有的定义它都会有,所以这样的隐式转换是被认为合法的,比如:class A { .... }class B:A {....} A aInstance=new B(); 但是基类类型不能隐式转换为派生类,因为派生类中的成员定义在基类中是不一定存在的,如下面这样的转换是无法通过的:B bInstance=new A(); //不能从基类隐式转换到派生类 当你确实知道一个类型为A的变量实际上是派生类B时,可以通过强制类型转换为派生类:A a=new B();........B b=(B)a;
全部回答
继承
在类的层次结构中(即继承结构中)基类和派生类的构造函数的使用方式。派生类对象的初始化由基类和派生类共同完成:基类的成员由基类的构造函数初始化,派生类的成员由派生类的构造函数初始化。  当创建派生类的对象时,系统将会调用基类的构造函数和派生类的构造函数,构 造函数的执行次序是:先执行基类的构造函数,再执行派生类的构造函数。如果派生类又有对象成员,则,先执行基类的构造函数,再执行成员对象类的构造函数,最后执行派生类的构造函数。至于执行基类的什么构造函数,缺省情况下是执行基类的无参构造函数,如果要执行基类的有参构造函数,则必须在派生类构造函数的成员初始化表中指出。如:class A
{ private int x;
 public A( ) { x = 0; }
 public A( int i ) { x = i; }
};class B : A
{ private int y;
 public B( ) { y = 0; }
 public B( int i ) { y = i; }
 public B( int i, int j ):A(i) { y = j; }
};B b1 = new B(); //执行基类A的构造函数A(),再执行派生类的构造函数B()
B b2 = new B(1); //执行基类A的构造函数A(),再执行派生类的构造函数B(int)
B b3 = new B(0,1); //执行执行基类A的构造函数A(int) ,再执行派生类的   构造函数B(int,int)   在这里构造函数的执行次序是一定要分析清楚的。另外,如果基类A中没有提供无参构造函数public A( ) { x = 0; },则在派生类的所有构造函数成员初始化表中必须指出基类A的有参构造函数A(i),如下所示:class A
{ private int x;
 public A( int i ) { x = i; }
};class B : A
{ private int y;
 public B():A(i) { y = 0; }
 public B(int i):A(i) { y = i; }
 public B(int i, int j):A(i) { y = j; }
};
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2011年深圳市上年度在岗职工年平均工资是多少
为什么不让老人抱婴儿
我是开馄饨店的,隔壁是小学,生意不怎么好,
从汉口火车站坐地铁到武汉天河机场,第一班地
CSS中overflow的用法是什么?
颧骨有一点点高怎么办
想买个主机预算3000块,能买个什么样的
姓yi是哪个yi?
天天用海藻敷脸。好不好?
汽车防冻液要加多少?
一对一的暑假班除了精锐教育还有哪些比较好啊
生板栗怎样处理可以让皮肉分离
监理每个月怎么监督施工单位民工工资发放
羧酸中的OH属于羟基吗
抖音合拍怎么办
推荐资讯
这配置怎么样,哪个部件太差
身体中微量元素钙、铁 、锌缺少用食疗怎么补
农历1994年农历4月初三是阳力的多少
本科护理,没有考到护士证,可以毕业和拿到学
自己准备组装一台电脑 不知道配件之间是不是
1.65米的个子,38码的鞋正常吗?
2018分享你做过最最污的事情
有限责任公司和有限公司有什么区别?谢谢了,
襄阳个人办理缴纳公积金怎么弄?
汽车点不了火,一段时间后又可以,停一个小时后
山东胶州市朝鲜族人多吗?占总人口比例多少?主
完好无恙是个词语吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?