首页 > 后端开发 > 正文

在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?

2024-07-19 00:43:01 | 我爱编程网

在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?相关内容,小编在这里做了整理,希望能对大家有所帮助,关于在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?信息,一起来了解一下吧!

本文目录一览:

在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?

在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?

1、如果父类和子类中都没有显式的定义__construct,在实例化子类对象时,只会隐含的调用子类自己的构造方法。

2、如果父类中有显式的构造方法__construct,而子类中没有定义__construct,在实例化子类对象时,就会调用父类中的构造方法。

3、如果父类和子类中都显式的定义了__construct,在实例化子类对象时,只会调用子类自己的构造方法(这就像是子类重构了父类的构造方法),而如果也想要调用父类的构造方法的话,就需要在子类的__construct 方法中显式的调用,(如 __construct(){ parent::_construct();})。

扩展资料 我爱编程网

子类的构造函数名与子类名相同。

在子类里父类的构造函数不会自动执行。

要在子类里执行父类的构造函数,必须执行类似以下语句:

$this->[父类的构造函数名()]

类的构造函数统一命名为__construct()。

子类的构造函数名也是__construct()(也是废话)。

在子类里父类的构造函数会不会执行,分两种情况:

1、如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。

2、如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。

这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:parent::__construct();

参考资料来源:

百度百科——继承

在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?

类的构造函数都有哪些类的构造函数都有哪些

类的设计思想:

构造函数,可以给点赋初值的构造函数。

点的相关参数作为成员变量,如横坐标,纵坐标。

设计成员函数,如取得坐标值的函数,此点和原点之间的距离。

in c language

123456789101112131415161718192021222324 class Point{    protected:        double x;        double y;    Point(inx = 0 , iny = 0){//C的缺省构造函数,构造不传入参数时默认值是0        x = inx;        y = iny;    }    ~Point(){    }    public:        double getX(){            return x;        }        double getY(){            return y;        }        void setX(double inx){            x = inx;        }        void setY(double iny){            y = iny;        }};//写C一定不要忘记,类定义结束也有个分号。

in java language

1234567891011121314151617181920 public class Point(){//JAVA对于类的属性要求很严苛,每个元素必须显式注明属性    protected double x;    protected double y;    public Point(double inx,double iny){        x = inx;        y = iny;    }    public void setX(double inx){        x = inx;    }    public void setY(double iny){        y = iny;    }    public double getX(){        return x;    }    public double getY(){        return y;    }}

in JS

1234567891011121314151617 \*JS中万物皆为obj,而没有CLASS, 你可以认为FUNCTION就是一个OBJ *\function Point(inx,iny){//js就比较宽松了,可以随意申请变量,但是JS没有保护这个概念    var x = inx;    \\这就是一个私有变量。只能在类内部访问    var y = iny;    this.outx = x;    \\共有变量,在外部访问时 obj.name 内部访问this.name    this.outy = y;    function setX(inx){    \\JS有setget设置器,但是如果用那个,看的不是很清楚        this.outx = inx;        x = inx;    }    function setY(iny){        this.outy = iny;        y = iny;    }}\\对于JS,类的基础源于其原型关键字,这一块可以参考W3CSCHOOL\\ _library_prototype.asp

in PHP

123456789101112131415161718192021222324 <?phpclass Point{    protected $x;    protected $y;    function __construct($inx,$iny){            $this->x = $inx;        $this->y = $iny;     }    function __destruct(){}         public function getX(){        return $this->x;    }    public function getY(){        return $this->y;    }    public function setX($inx){        $this->x = $inx;    }    public function setY(){        $this->y = $iny;    }}?>

在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?

php 构造函数格式,具体该怎么写?应该注意什么呢?

我爱编程网(https://www.52biancheng.com)小编还为大家带来php 构造函数格式,具体该怎么写?应该注意什么呢?的相关内容。

在PHP里,如果你没有手写构造函数,则php在实例化这个对象的时候,会自动为类成员以及类方法进行初始化,分配内存等工作,但是有些时候不能满足我们的要求,比如我们要在对象实例化的时候传递参数,那么就需要手动编写构造函数了,手写构造函数有两种写法,只是表现形式不同,其实本质一样
class test
{
function __construct()
{
//your code
}
}
class test
{
function test()//如果方法名跟类名字一样,将被认为是构造函数
{
//your code
}
}
以上为两种基本形式
我刚才说的传递参数进行实例化的例子,简单的写一个参考

class test
{
public $test = '';
function __construct($input = '')
{
$this->test = $input;
}
function getTest()
{
return $this->test;
}
}
$a = new test('a test');
echo $a->getTest()//将输出 a test
$b = new test();
echo $a->getTest()//没有任何输出(其实是有输出,但是输出为空)

以上就是在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?全部内容了,了解更多相关信息,关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢?”相关推荐
php继承一个父类,如何自动执行父类方法
php继承一个父类,如何自动执行父类方法

php继承一个父类,如何自动执行父类方法你在父类写一个成员函数然后子类继承 创建子类对象的时候可以点出来父类的成员函数比如Studentzs=newStudent();zs.SayHello() //点出来的是从父类的继承来的成员函数输出结果为父类的-&gt;我是人类public class Person{    public void SayHello()  

2025-01-07 18:51:33
php A类的构造函数里实例化B类对象,B类的构造函数里实例化A类对象,当中某一类实例化时会发生什么?
php A类的构造函数里实例化B类对象,B类的构造函数里实例化A类对象,当中某一类实例化时会发生什么?

【PHP】依赖注入(DI)和控制反转(IOC)详解依赖注入与控制反转在技术领域常被提及,实际是同一种设计模式,旨在减少组件间的耦合度。下面以PHP为视角,深入解析依赖注入概念。想象我们有一个类需要使用数据库连接,最原始方法是将数据库类文件包含在构造函数中,通过新实例化db类并传入连接信息,之后调用数据库操作。这看似实现功能,但问题随之而来:随着越来越多类需用到db组件,修改代码时若数据

2025-01-22 07:19:40
类的构造函数都有哪些类的构造函数都有哪些
类的构造函数都有哪些类的构造函数都有哪些

定义一个坐标点类Point,包含数据成员x和y,无参构造函数,带两个参数的构造函数.&lt;?php    class Point{        public $x = 0;        public $y = 0;        public function __construct($x,%y){            $this-&gt;x = $x;            $th

2024-11-22 17:28:20
【PHP】初始化是一定要用类的同名函数做构造函数吗?
【PHP】初始化是一定要用类的同名函数做构造函数吗?

请问PHP构造函数的含义php的两大oop使用型函数:构造函数(__construct)和析构函数(__destruct);构造函数:当在某一页面写了众多函数,其中就包括构造函数,当你调用其中任一函数时,都将在调用此函数前先调用构造函数,如:你把链接数据库代码写到构造函数里面,然后在使用增删改查时,就不用再写连接s数据库语句了,因为有构造函数在,你就只用写增删改查类sql语句就可以了。

2024-08-02 18:43:13
PHP 静态方法怎么调用父类非静态方法
PHP 静态方法怎么调用父类非静态方法

php直接用类名调用静态方法会不会触发类的构造函数调用静态方法与触发类的构造函数没有必然关系。但是静态方法可以实例化类本身,这时候会触发构造函数,而且可以传参数。如:class classname{    private function __construct($a){        $this-&gt;a = $a;        exit($this-&gt;a);//打印一下    

2024-07-24 18:21:44
PHP的构造函数理解不了?他和类里面的函数有什么区别?
PHP的构造函数理解不了?他和类里面的函数有什么区别?

phpecho()和print()、require()和include()函数区别说明1.echo和print的区别PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。$r=print“Hell

2024-07-20 08:16:37
PHP中的函数 php判断一个类里面的某个函数是否存在
PHP中的函数 php判断一个类里面的某个函数是否存在

php中function函数的用法在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,

2024-10-22 09:11:05
php __construct参数默认数组 如何php类中的初始化将参数默认为一个数组,补充例子
php __construct参数默认数组 如何php类中的初始化将参数默认为一个数组,补充例子

php__construct参数默认数组如何php类中的初始化将参数默认为一个数组,补充例子你指这样&lt;?php$cla = new a();class a{    private $a;    function __construct($_a=array(1,2,3,4)){     $this-&gt;a = $_a;     print_r($this-&gt;a);    

2024-08-01 07:32:09