究竟建设者究竟做了什么?

时间:2017-07-04 15:47:07

标签: c# php constructor parent derived-class

昨天我正在阅读PHP课程,突然之间有些奇怪了。这是关于C#和PHP的构造函数。

我的问题是什么是构造函数?它不是一个特殊的方法,在实例化一个类可以做类似方法的类时使用,并为类等内存等获取必要的资源?如果是,例如当我们有一个名为A的父类时,我们派生另一个名为B的类并创建一个B实例并调用B构造函数并将一些参数发送给它的父(A)使用:base(args。) (在C#中)并使用parent :: __ construct(args)(在PHP中),所以它去调用父构造函数,我们不想为父节点准确地获取资源但我们只是调用父构造函数来执行它为了我们。到底发生了什么?

我想在这种情况下只是简单地称它为函数! :\我不知道我是否清楚自己......问我是否有任何歧义,谢谢;)

已更新 感谢给我负面投票的方式...... 看看这个链接: Microsoft Docs 到目前为止我在这里读到的不仅仅是一个包含代码块的简单函数。(但是你说的是差异,没有返回值等等) 如果它只是一个在创建实例时调用的函数,那么为什么如果我们将它设为私有,那么我们不能再创建它的任何实例了? 为什么当我们想要创建一个类时,在类名的末尾添加一个()?当我们想要将任何args传递给构造函数时,使用那些()来发送? [person new_person = new Person();] 如果你认为这个问题没有显示出任何努力,那么再次投票否定:D

2 个答案:

答案 0 :(得分:1)

构造函数是一个代码块,类似于在创建对象实例时调用的方法。

构造函数没有返回类型。构造函数的名称必须与类的名称相同。

答案 1 :(得分:1)

构造函数基本上只是一个函数。普通函数和构造函数之间的区别是构造函数

  1. 没有返回值(甚至无效)
  2. 被命名为类本身(或具有预定义的特殊名称)
  3. 被归类为必须在对象处于可用状态之前执行的强制函数
  4. 不能像其他功能一样调用
  5. 在创建对象的新实例时,将自动调用构造函数。

    <强>更新

    要理解为什么你不能用私有构造函数(从外部)创建一个新的实例,暂时把它看作一个正常的函数。
    如果你想从所述类之外调用new ClassWithPrivateConstructor(),它将无法工作,因为你无权访问构造函数。

    您现在可能认为私有构造函数是无用的。但事实并非如此。有效案例。例如。单身对象。

    并且()再次将构造函数视为正常函数。你想调用构造函数。也许甚至有争论。这就是为什么在创建对象的新实例时需要()的原因。