PHP 继承、封装、多态

PHP 继承、封装、多态,第1张

-子类只能继承父类的非私有属性

-子类继承父类后,相当于将父类的属性和方法copy到子类,可以直接使用$this调用该属性;

-php只能单继承,不支持一个类继承多个类。但是一个类可以进行多层继承

类实现封装是为了不让外面的类随意修改一个类的成员变量,所以在定义一个类的成员的时候,我们使用private关键字设置这个成员的访问权限只能被这个类的其他成员方法调用,而不能被其他类中的方法调用,即通过本类中提供的方法来访问本类中的私有属性

-所以在该类中我们会提供一个访问私有属性的方法

-然后我们一般会定义两个方法来实现对一个变量的 *** 作,即__get()和__set()方法

一个类被多个子类继承,如果这个类的某个方法,在多个子类中,表现出不同的功能,我们称这种行为为多态(同一个类的不同子类表现出不同的形态)

-子类继承父类->子类重写父类的方法->父类引用指向子类对象

这篇文章主要介绍了PHP多态代码实例,本文用2个代码实例来演示PHP中的多态,需要的朋友可以参考下

多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果)

这里两个例子:

第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。因为你调用的时候不是

stu-showGrade()

而是各自自己的方法;

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

class

stu{

public

function

showGrade(){

echo

base

class

}

}

class

xiaomin

extends

stu{

public

function

showGrade(){

echo

is

son

show

80

}

}

class

xiaoli

extends

stu{

public

function

showGrade(){

echo

is

son

show

60

}

}

function

doit($obj){

if(get_class($obj)

!=

stu){

$obj-showGrade()

}

}

doit(new

xiaoli())

doit(new

xiaomin())

第二个例子:dovoice

参数规定了$obj

为animal,意识就是用接口

接受了

实现类对象。了向上转型。这就符合同一类型,不同结果了,这就是多态;

实际上在Java中

会是

animal

a

=

new

dog();这样子的;因为PHP

是若类型语言。没有对象转型机制。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

interface

animal{

public

function

voice()

}

class

cat

implements

animal{

public

function

voice(){

echo

miao~~~br

}

}

class

dog

implements

animal{

public

function

voice(){

echo

wang

~~~br

}

}

function

dovoice(animal

$obj){

$obj-voice()

}

dovoice(new

dog())

dovoice(new

cat())


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7318732.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存