×

构造函数何时被调用?父类构造函数何时被调用

前端技术网 前端技术网 发表于2024-01-27 18:35:59 浏览1313 评论0

抢沙发发表评论

一、构造函数在被继承的时候为什么会调用父类的构造函数

不能,因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”。继承(extends)的含义其实是“扩展”,子类完全没必要扩展父类的构造函数,因为反正每次调子类的时候都会“自动运行”它父类的构造函数,如果真的需要子类构造函数特殊的形式,子类直接修改或重载自己的构造函数就好了。估计是你对“构造函数”的意义本身不理解,“调用”一个类有“继承”和“组合(说白了new一个类)”两种方式,当你“调用”一个类的时候就会“自动运行”它的“构造函数”。

二、派生类构造函数执行的次序是怎样的

先执行基类的构造函数,再执行子类的构造函数,若有多个基类,则按照基类的基础顺序调用基类的构造函数,如下所示:ClassA;ClassB;ClassC:publicB,publicA{};则先调用B的构造函数,后调用A的构造函数。

构造函数何时被调用?父类构造函数何时被调用

三、C#中析构函数具体是什么时候被调用

假设你的代码是这样

{

Farmern_farmer=newFarmer();

Farmerm_farmer=newFarmer("农民");

}

到下面的大括号时,栈上的n_farmer和m_farmer被销毁,所以堆里的两个对象才有可能给GC回收,如果是C++之类的语言,应该是先销毁m_farmer后销毁n_farmer(后进先出)。所以不可能是先构造一个n_farmer,然后马上就销毁了n_farmer。

构造函数何时被调用?父类构造函数何时被调用

还有,我们只能知道GC会回收这两个对象,但在.NET中,由于GC的存在,究竟何时调用析构函数我们是不能确认的。

四、C#中构造函数不能调用构造函数

能的,不过不能像是普通函数那样调用,只能当作继承来调用。我给你改了一下: publicMatrix(introws,intcols,double[]value) { numRows=rows; numColumns=cols; Init(numColumns,numRows); SetData(value); } publicMatrix(intnSize,double[]value):this(nSize,nSize,value) { //Matrix(intnSize,intnSize,double[]value);//错误6“ConsoleMatrix.Matrix”是“类型”,但此处被当做“变量”来使用 }

感谢您的阅读!希望本文对解决您关于构造函数何时被调用和父类构造函数何时被调用的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。