首页 > 后端开发 > 正文

在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先执行哪一个呢?”相关推荐
Python布尔类型和强制类型转换是什么?Python布尔类型和强制类型转换介绍
Python布尔类型和强制类型转换是什么?Python布尔类型和强制类型转换介绍

在python中,bool表示的数据类型是bool表示的数据类型是布尔型,即逻辑型,它的数值是True或False,即真或假,两者中的一个。例如:print(10&gt;9)输出结果是Trueprint(10==9)输出结果是Falseprint(10&lt;9)输出结果是Falsepython06-布尔表达式(bool)本篇主要讲的是布尔表达式基本操作,对于布尔值来说

2023-12-18 13:40:53
没有jdk,jre的情况下如何在运行一个.java类
没有jdk,jre的情况下如何在运行一个.java类

没有jdk,jre的情况下如何在运行一个.java类没有jdk,jre那是不可能运行java类的,还是去下载一个安装包吧,直接双击安装,也不是很麻烦,如果你不想配置环境变量的话,那在cmd窗口下,你就得先把路径切换到之前安装的jdk路径,之后在使用java命令时,运行的文件名就得是文件的全路径名称了没有配置jdk,怎么java如果没有在系统环境中配置Java路径,但要运行Java程序有

2024-05-09 01:49:09
请问PHP构造函数的含义 php this和self的区别
请问PHP构造函数的含义 php this和self的区别

PHP的其他方面PHP在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是数据文件:Adabas、D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MicrosoftSQLServer、·MySQL、Solid、Sybase、Oracle、PostgreSQL而在Internet上它也支持了相当多的通讯协议(prot

2024-07-14 11:50:21
python类是什么
python类是什么

python类是什么在这篇文章之中我们来了解一下关于类的知识,有些朋友可能是刚刚接触到python这一编程语言,对于什么是python类是什么意思都不明白,但是没关系接下来这篇文章将会带大家来学习什么是“类”。一、python类的定义类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。二、如何创建类使用c

2024-02-20 03:37:04
一个Java程序,若没有public类,文件名如何命名?是否可以存在多个main()方法?如何运行?
一个Java程序,若没有public类,文件名如何命名?是否可以存在多个main()方法?如何运行?

1,java程序的运行环境简称之为________.也称为构造器),程序块以及内部类.java程序的运行环境简称之为JRE。JRE全称JavaRuntimeEnvironment,由太阳微系统所研发,JRE可以让计算机系统运行Java应用程序(JavaApplication)。JRE的内部有一个Java虚拟机(JavaVirtualMachine,JVM)以及一些标准的类别函数库(C

2024-06-16 04:40:47
python不支持的数据类型是什么?
python不支持的数据类型是什么?

python不支持的数据类型是什么?python不支持的数据类型是char、byte类型。Python没有char或byte类型来保存单一字符或8比特整数。你可以使用长度为1的字符串表示字符或8比特整数。python的数据类型有:数字(int)、浮点(float)、字符串(str),列表(pst)、元组(tuple)、字典(dict)、集合(set)。

2024-02-09 16:40:08
Python的数字类型是什么,怎么表示?
Python的数字类型是什么,怎么表示?

Python的数字类型是什么,怎么表示?关于Python的数字类型,以下选项中描述错误的是()。A.Python整数类型提供了4种进制表示:十进制、二进制、八进制和十六进制.B.Python语言要求所有浮点数必须带有小数部分.C.Python语言中,复数类型中实数部分和虚数部分的数值都是浮点类型,复数的虚数部分通过后缀“C”或者“c”来表示.D.Python语言提供i

2023-12-15 08:11:58
Java中如何让web服务器启动的时候自动运行web程序中某个类的某个
Java中如何让web服务器启动的时候自动运行web程序中某个类的某个

Java中如何让web服务器启动的时候自动运行web程序中某个类的某个1、首先让需要自动运行的类继承javax.servlet.http.HttpServlet2、把需要自动运行的类中写一个init方法。(servlet应用程序启动的入口就是init方法)public void init(){            System.out.println("这样在web容器启

2024-05-14 02:03:52