标签: constructor

__construct用于什么功能?

我一直在注意__construct课程.我做了一些阅读和网上冲浪,但我找不到我能理解的解释.我刚刚开始使用OOP.

我想知道是否有人可以给我一个大概它是什么,然后一个简单的例子,它如何与PHP一起使用?

php constructor

194
推荐指数
9
解决办法
22万
查看次数

如何让PHP类构造函数调用其父级的父构造函数

我需要在PHP中使用类构造函数调用其父级的父级(祖父级?)构造函数而不调用父构造函数.

// main class that everything inherits
class Grandpa 
{
    public function __construct()
    {

    }

}

class Papa extends Grandpa
{
    public function __construct()
    {
        // call Grandpa's constructor
        parent::__construct();
    }
}

class Kiddo extends Papa
{
    public function __construct()
    {
        // THIS IS WHERE I NEED TO CALL GRANDPA'S
        // CONSTRUCTOR AND NOT PAPA'S
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一件很奇怪的事情,我试图找到一种味道并不难闻的手段但是,我很好奇是否有可能.

编辑

我想我应该发布所选答案的理由.原因是; 它是最优雅的解决方案,希望在保留所有值的同时调用"祖父母"的构造函数.它当然不是最好的方法,也不是OOP友好的,但这不是问题的问题.

对于以后遇到此问题的任何人 - 请找到另一种解决方案.我能够找到一种更好的方法,不会对类结构造成严重破坏.你也应该这样.

php oop inheritance constructor class

194
推荐指数
10
解决办法
22万
查看次数

C#中抽象类的构造函数

为什么可以在C#中为抽象类编写构造函数?
据我所知,我们无法实例化一个抽象类..那么它的用途是什么?
你无法实例化这个类,对吧?

c# constructor abstract-class

193
推荐指数
6
解决办法
16万
查看次数

带空括号的默认构造函数

有没有什么好的理由在C++中调用默认构造函数时,一组空的圆括号(括号)无效?

MyObject  object;  // ok - default ctor
MyObject  object(blah); // ok

MyObject  object();  // error
Run Code Online (Sandbox Code Playgroud)

我似乎每次都自动输入"()".是不是有一个很好的理由不允许这样做?

c++ constructor c++-faq default-constructor most-vexing-parse

192
推荐指数
8
解决办法
3万
查看次数

我可以从C#中同一个类的另一个构造函数调用重载的构造函数吗?

我可以从C#中同一个类的另一个构造函数调用重载的构造函数吗?

c# constructor

192
推荐指数
4
解决办法
11万
查看次数

如何继承构造函数?

想象一下具有许多构造函数和虚方法的基类

public class Foo
{
   ...
   public Foo() {...}
   public Foo(int i) {...}
   ...
   public virtual void SomethingElse() {...}
   ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个覆盖虚方法的后代类:

public class Bar : Foo 
{
   public override void SomethingElse() {...}
}
Run Code Online (Sandbox Code Playgroud)

而另一个后代做了更多的东西:

public class Bah : Bar
{
   public void DoMoreStuff() {...}
}
Run Code Online (Sandbox Code Playgroud)

我是否真的必须将所有构造函数从Foo复制到Bar和Bah?然后,如果我在Foo中更改构造函数签名,我是否必须在Bar和Bah中更新它?

有没有办法继承构造函数?有没有办法鼓励代码重用?

c# inheritance constructor

181
推荐指数
10
解决办法
18万
查看次数

Java构造函数继承

我想知道为什么java构造函数不会被继承?你知道什么时候有这样的课:

public class Super {

  public Super(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){
    this.serviceA = serviceA;
    //etc
  } 

}
Run Code Online (Sandbox Code Playgroud)

稍后当你继承时Super,java会抱怨没有定义默认的构造函数.解决方案显然是这样的:

public class Son extends Super{

  public Son(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){
    super(serviceA,serviceB,serviceC);
  }

}
Run Code Online (Sandbox Code Playgroud)

这段代码是重复的,而不是干的和无用的(恕我直言)...所以这又带来了问题:

为什么java不支持构造函数继承?不允许这种继承有什么好处吗?

java inheritance constructor

179
推荐指数
4
解决办法
13万
查看次数

ReactJS:警告:setState(...):在现有状态转换期间无法更新

我试图从我的渲染视图重构以下代码:

<Button href="#" active={!this.state.singleJourney} onClick={this.handleButtonChange.bind(this,false)} >Retour</Button>
Run Code Online (Sandbox Code Playgroud)

到绑定在构造函数中的版本.原因是渲染视图中的绑定会给我带来性能问题,特别是在低端手机上.

我创建了以下代码,但我不断收到以下错误(很多错误).看起来应用程序进入循环:

Warning: setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.
Run Code Online (Sandbox Code Playgroud)

以下是我使用的代码:

var React = require('react');
var ButtonGroup = require('react-bootstrap/lib/ButtonGroup');
var Button = require('react-bootstrap/lib/Button');
var Form = require('react-bootstrap/lib/Form');
var FormGroup = require('react-bootstrap/lib/FormGroup');
var Well = require('react-bootstrap/lib/Well');

export default class Search extends React.Component {

    constructor() …
Run Code Online (Sandbox Code Playgroud)

constructor setstate reactjs

175
推荐指数
4
解决办法
15万
查看次数

了解JavaScript中的原型继承

我是JavaScript OOP的新手.你能解释下面的代码块之间的区别吗?我测试了两个块都有效.什么是最佳实践,为什么?

第一块:

function Car(name){
    this.Name = name;
}

Car.prototype.Drive = function(){
    console.log("My name is " + this.Name + " and I'm driving.");
}

SuperCar.prototype = new Car();
SuperCar.prototype.constructor = SuperCar;

function SuperCar(name){
    Car.call(this, name);
}

SuperCar.prototype.Fly = function(){
    console.log("My name is " + this.Name + " and I'm flying!");
}

var myCar = new Car("Car");
myCar.Drive();

var mySuperCar = new SuperCar("SuperCar");
mySuperCar.Drive();
mySuperCar.Fly();
Run Code Online (Sandbox Code Playgroud)

第二块:

function Car(name){
    this.Name = name;
    this.Drive = function(){ 
        console.log("My name is " + this.Name + …
Run Code Online (Sandbox Code Playgroud)

javascript oop inheritance constructor prototype-programming

170
推荐指数
3
解决办法
5万
查看次数

167
推荐指数
4
解决办法
7万
查看次数