PHP中类的继承

2025-12-31 09:57:43

1、1.基本概念

就是定义一个类的时候,从另一个“已有的类”,获得其特征信息(属性和方法)的过程。

继承的基本语法为:

class  新类名  extends  已有类名{

//.....新的类的成员定义

}

比如:

PHP中类的继承

2、2.访问修饰控制符

对一个类来说,其中包含了若干的属性和方法(成员)。

应用中,

有些成员,是应该只给自己使用的;

有些成员,是可以给“一定的关系户”来使用的;

有些成员,是可以给“所有外界”使用的。

3个访问修饰符

用来控制这类特性的语法形式,就称为“访问修饰符”,就3个:

public:  公共的,表示该成员“哪里都可以用”;

之前用的var,就是public的一个“同义词”。

protected: 受保护的,半公共的,表示该成员“只有跟自己有关系的类的内部”可以使用;

private:  私有的,表示该成员“只有自己内部可以用”;

示例代码:

class  A{

public  $p1  =  1;

protected $p2  =  2;

private  $p3  = 3;

}

但是,光设定这3个修饰符,并不能决定一个成员是否可访问,而是,还需要来确定访问的位置。

3个位置:

一个类的内部:

一个类的继承类的内部:

一个类的外部:

示例代码:

class A{

public $p1 = 1;  //假设要用这个属性

protected  $p2 = 2;

private $p3 = 3;

function  f1(){

//这里就是类A的内部,对属性p1来说。

//这里可以访问$p1, $p2, $p3

}

}

class  B  extends  A{

function  f2(){

//这里就是类A继承关系的类的内部,对属性p1来说

//这里可以访问$p1, $p2

}

}

$a1 = new A();

$a1->p1 = 11;  //这里就是类A的外部。

//这里只能访问$p1

一个类的成员可访问性的总结:

PHP中类的继承

3、3.所谓访问,其实是指这样的代码形式“是否有效”的问题:

$对象->实例属性或实例方法();  //通过对象访问实例成员

类::静态属性或静态方法();  //通过类访问静态成员

演示访问特性:

这种可访问性,同样适用于对类中定义的方法的访问。

对于方法,可以省略修饰符,此时默认就算“public”;

PHP中类的继承

4、4.parent关键字

parent代表“父类”。

它只能用在一个方法中。

其使用只有一个形式:

parent::父类的属性或方法();  //可以是实例的或静态的;

对于静态的:就表示是使用父类中的静态属性或静态方法;

对于实例的:此时,调用父类的实例方法时,必然要求该调用语句本身所在的方法是在一个对象的调用情况下——即:此时,该parent其实可以认为是代表(父类)对象。

注意:对于实例属性,不可以访问。

PHP中类的继承

5、5.parent的典型应用:

PHP中类的继承

6、6.参数传递路线:

PHP中类的继承

7、7.构造方法和析构方法在继承中的表现

1,子类中如果没有构造方法,则子类在实例化的时候,会自动调用父类构造方法(如果有);

1.1,推论:此时,子类实例化时的实参,需要按照父类构造方法的对应形参给定;

2,子类中如果没有析构方法,则子类在被销毁的时候,会自动调用父类析构方法(如果有);

3,如果子类有构造方法,则不会自动调用父类构造方法,但我们可以在其中手动调用:parent::__construct()

4,如果子类有析构方法,则不会自动调用父类析构方法,但我们可以在其中手动调用:parent::__destruct()

下面演示自动调用父类构造方法的情形:

PHP中类的继承

8、8.类和对象的访问总结图:

PHP中类的继承

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢