11

PHP面向对象编程的三大特性

 3 years ago
source link: https://blogread.cn/it/article/2465?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
PHP面向对象编程的三大特性 -- PHP -- IT技术博客大学习 -- 共学习 共进步!
您现在的位置首页 --> PHP --> PHP面向对象编程的三大特性

PHP面向对象编程的三大特性

浏览:2778次  出处信息

这里有一个叫做“动物”的类:

01 <?php
02  
03 class animal{
04  
05 public $name  = 'cat';//动物的公共属性,内外部可以访问、赋值
06  
07 public $sex   = 'male';
08  
09 public $voice = 'miao';
10  
11 public function shout(){//动物的方法,内外部可以访问
12  
13 echo $this->name;//调用属性时,不加再加$
14  
15 echo ' says ';
16  
17 echo $this->voice;
18  
19 echo '<br />';
20  
21 }
22  
23 }
24  
25 $animal = new animal;
26  
27 $animal->name = 'littleCat';//外部赋值
28  
29 $animal->shout();//外部调用方法
30  
31 echo $animal->sex;//外部访问属性
32 echo '<br />';
33 ?>

运行以上代码,将打印:

1 littleCat says miao
2 male

三大特性之一:封装

将上面第5行改成

1 private $name  = 'cat';//动物的私有属性,内部可以访问、赋值,外部不行

那么,第27行出错,因为不能在外部赋值。删除第27行之后,将打印:

1 cat says miao
2 male

封装把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。比如张三是一个对象,谁能修改他的工资,谁能查看,谁不能查看,就是一个封装程度的问题。

三大特性之二:继承

在动物类第32行后继续插入

01 class dog extends animal{
02  
03 public $name  = 'dog';//重写原有属性
04  
05 public $style = 'traditional';//新增属性
06  
07 }
08  
09 $dog = new dog;
10  
11 $dog->shout();
12  
13 echo $dog->style;
14  
15 echo '<br />';

有个叫做“狗”的类继承了“动物”类。这样,狗拥有动物的属性和方法,不用再写很长一段代码了(复制粘贴小修改当然可以“省事”,但要是有很多很多动物,就不划算了)。

此部分代码打印:

1 dog says miao
2 traditional

继承的类可以理解为被继承者的特殊化,因为它除了拥有父类的所有特性(属性和方法),还具备自己独有的个性(比如改写原有的,新增自己的)。

以上的打印结果出现了笑话,因为狗是不会“喵”的。继承适合B是A的特殊种类,而不是A包含B,因为A会的东西,B也都会了。所以正确的做法是不定义动物类的具体名字、性别、叫声,而是分别写两个类(猫和狗)来继承动物类。

三大特性之三:多态

多态表示不同的对象做相同的事,但要用自己的方法做。比如动物都要叫,但叫声不同。按照我的理解,就是“重写”二字。比如同是求面积,长方形和圆形的“方法”不同,这就是多态。

“PHP这种弱类形的面向对象的语言里面,多态的特性并不是特别的明显,其实就是对象类型变量的变项应用。”

1 《大话设计模式》

2 PHP面向对象编程全面讲解 http://wenku.baidu.com/view/9a114460ddccda38376baf36.html

觉得文章有用?立即:

和朋友一起 共学习 共进步!

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
Loading...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK