文档库 最新最全的文档下载
当前位置:文档库 › 黑马程序员_PHP_课程同步笔记day28:PHP类的三大特性

黑马程序员_PHP_课程同步笔记day28:PHP类的三大特性

【黑马程序员济南】PHP课程同步笔记day28:PHP类的三

大特性

PHP类的三大特性:封装、继承、多态,今天我们来讲解一下其中的两大特性,继承和封装

继承

基本概念:

可以使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类。通过extends关键字实现继承关系。通俗来说,要有继承就得有一个“根源”,这“根源”你可能想像你以后生了儿子或者女儿,他们会从你这里得到一些“东西(属性和方法)”,这样你的“后代”就是持有你(根源)所有的一些特征了。

继承的基本语法:

class 新的类名 extends 另一个已有的类名{

//新的类的成员定义。

}

先看代码:

[PHP] 纯文本查看复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

//传智播客黑马程序员济南中

心出品

//动物类

class Dongwu{

var$point= "动";

}

//脊椎动物类

class Jizhui{

var$point1= "动";

var$point2= "有脊柱";

}

//鸟类

class Bird{

var$point1= "动";

var$point2= "有脊柱";

var$point3= "有翅膀";

}

[/size][/font][align=left][fo

nt=微软雅黑][size=3]

其中有一些“重合”的特征信息,我们可以改造为如下:

[PHP] 纯文本查看 复制代码

?

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19

][font=微软雅黑][size=3]//

传智播客黑马程序员济南中心

出品

//动物类

class Dongwu{

var $point = "动";

}

//脊椎动物类

class Jizhui extends

Dongwu{

//var $point1 = "动";//

继承自动物类,这个就不用写

var $point2 = "有脊柱";

}

//鸟类

20

21

22

23

class Bird extends Jizhui{

//var $point1 = "动";//

继承自脊椎动物类,这两个就

不用写了

//var $point2 = "有脊柱

";

var$point3= "有翅膀";

}

$j1= new Jizhui();

var_dump($j1);

$b1= new Bird();

var_dump($b1);

输出结果:

object(Jizhui)#1 (2){

['piont2'] => string(9) "有脊柱"

['point1']=>string(6) "动"

}

object(Bird)#2 (4){

['point3'] => string(9) "有翅膀"

['point2'] => string(9) "有脊柱"

['point1']=>string(6) "动"

}

注意:PHP不能多层继承,如:class A extends B extends C,这样的继承在PHP中是无效的,PHP里只有单继承,不能多继承。

封装

把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public、protected、private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,尽可能的对成员进行封装。

16

17

18

19

20

21

22

23

24

25

26

27

28 public$p4= 4; function ShowInfo(){ echo"B中访问A中的

p1:".$this->p1;//输出结果为1

echo"B中访问A中的p2: ".$this->p2;//输出结果为2

//echo "B中访问A中的p3: ".$this->p3;//报错,继承类中访问父类受保护的属性

echo"Bz中访问自己的p4: ".$this->p4;//输出结果为4

}

}

$b1= new B();

echo"b1->p1:".$b1->p1;//结果为1

//echo

"b1->p2:".$b1->p2;//报错,外部访问父类中三种修饰符属

性的结果

//echo

"b1->p3:".$b1->p3;//报错

echo

"b1->p3:".$b1->p4; //结

果为4

$b1->ShowInfo();

$a1= new A();

[/size][/font][align=left][fo

nt=微软雅

黑][size=3]$a1->ShowInfo(

);

其他注意事项:

1,访问控制修饰符只用于修饰属性和方法(含静态的和实例的),不用于修饰类常量; 2,属性前面必须有修饰符,之前的var就是public;

3,方法前面可以没有修饰符,如果没有,则默认当做“public”;

相关文档