
-子类继承父类后,相当于将父类的属性和方法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())
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)