PHP面向对象的三大特性是指封装性,继承性,多态性。

一、封装性

封装性就是把一个类(对象)的属性和方法封装起来,外部只有被授权的方法或操作才可以访问。
php提供了三种访问控制符
public 表示全局的,本类内部,类外部,子类都可以访问 。
protected 表示受保护的,只有本类或子类可以访问 。
private 表示私有的,只有本类内部可以访问,外部和子类都不可以访问 。

<?php
class play
{  public $public;  private $private;  protected $protected;  public  function __construct(){  $this->public    = 'public     <br>';  $this->private   = 'private    <br>';  $this->protected = 'protected  <br>';  }          public function public_function() {  echo "you request public function<br>";  echo $this->public;  echo $this->private;        //private属性,内部可以调用  echo $this->protected;      //protected属性,内部可以调用  $this->private_function();      //private方法,内部可以调用  $this->protected_function();      //protected方法,内部可以调用  }  protected  function protected_function(){  echo "you request protected function<br>";  }  private function private_function(){  echo "you request private function<br>";  }
}   $test = new play();  echo $test->public;  echo $test->private;    //Fatal error: Cannot access private property test::$private  echo $test->protected;  //Fatal error: Cannot access protected property test::$protected  $test->public_function();  $test->protected_function(); //Fatal error: Call to protected method test::protected_function() from context  $test->private_function();  //Fatal error: Call to private method test::private_function() from context  ?>
从上面的例子中,我们可以看出,
public:    可以class内部调用,可以实例化调用。
private:   可以class内部调用,实例化调用报错。
protected:  可以class内部调用,实例化调用报错。

二、继承性

面向对象的继承性是指子类可以继承父类的属性和方法,并且子类可以自定义属性和方法。

<?php
class play
{  public $public;  private $private;  protected $protected;  public  function __construct(){  $this->public    = 'public     <br>';  $this->private   = 'private    <br>';  $this->protected = 'protected  <br>';  }  public function public_function() {  echo "you request public function<br>";  echo $this->public;  }  protected  function protected_function(){  echo "you request protected function<br>";  echo $this->protected;  }  private function private_function(){  echo "you request private function<br>";  echo $this->private;  }  }  class play1 extends play{  public function __construct(){  parent::__construct();  }  public function act(){  echo $this->public;  echo $this->private;       //Notice: Undefined property: play1::$private  echo $this->protected;  $this->public_function();  $this->protected_function();  $this->private_function();    //Fatal error: Call to private method play::private_function() from context 'play1'  }  public  function pro_extends_function(){  echo "you request extends_protected function<br>";  }  public function pri_extends_function(){  echo "you request extends_private function<br>";  }
}
$play = new play1();
$play -> act();
从上面的例子中,我们可以看出,
public:    play类中的public可以被继承。
private:   play类中的private不可以被继承。
protected:  play类中的protected可以被继承。

三、多态性

多态性是指同一个对象在不同的情形下(被实例化),表现出不同的形态。

class car
{public $name;public $color;public $pricepublic function run(){echo "I am a car,I can run";}
}class bus extends car
{//覆盖和重写public function run(){echo "I am a bus,I can run,too";}
}
$bus = new bus();
echo $bus->run();
//最后输出 I am a bus,I can run,too

PHP面向对象的三大特性相关推荐

  1. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  2. 面向对象的三大特性之继承

    # 面向对象的三大特性之继承# 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好 (如机器人) # 当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 (动物-- ...

  3. 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?

    Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...

  4. 面向对象之三大特性:继承,封装,多态

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  5. Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数)...

    Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数) https://mubu.com/doc/1AqL_M0IbW 继承之钻石继承 多态 封装 几个装饰 ...

  6. polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  7. C++ 面向对象程序三大特性之 继承

    目录 继承的概念 继承的定义及使用 继承方式和访问权限 基类和派生类对象的赋值转换 继承中的各成员的作用域 派生类的默认成员函数 构造函数 拷贝构造 赋值运算符重载函数 析构函数 继承与友元 继承与静 ...

  8. 面向对象的三大特性:封装、继承、多态

    面向对象的三大特性 面向对象的三大特性:封装.继承.多态 封装 封装,成员变量的封装,保证了数据的安全性.封装的好处:过滤了不合理的值.屏蔽内部的赋值过程.让外界不必关注内部的细节 Set方法 1.  ...

  9. 面向对象:三大特性与五大原则

    面向对象:三大特性与五大原则 面向对象(Object Oriented, OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布 ...

  10. java面向对象特性_java面向对象编程三大特性

    一说到java面向对象编程就想到面向对象的三大特性,封装,继承和多态,下面我们来具体分析以下这三大特性在编程中是如何具体体现的. 封装 将类的属性和具体实现细节隐藏,只提供相关的接口和方法来对隐藏信息 ...

最新文章

  1. python信号与槽_Python信号和插槽(1),python,与,一
  2. 21天实战人工智能系列:人工智能产品经理最佳实践(1)
  3. MySQL基础操作(一)
  4. java基础类的继承_JAVA核心技术I---JAVA基础知识(类的继承)
  5. 各大厂大数据精品分享汇总(进阶版)
  6. 作团队感悟(4)----分享的心态
  7. matlab如何画出来地球,matlab绘制地球
  8. php fseek函数,php fseek函数怎么用 - fseek
  9. 百度翻译使用经验(Python版)
  10. pmp是什么意思啊?
  11. JavaGui 02 Pannel-面板
  12. 音乐播放器制作 (HTML + CSS + JavaScript)
  13. CC3200 —— No.1 环境搭建(更新于2020年5月1日)
  14. 服务器系统浏览器打不开,W7系统浏览器打不开怎么办
  15. ES6结构赋值,一篇就够
  16. costmap_2d详解3:costmap_2d_ros.cpp
  17. linux账号权限的一些总结
  18. 遇见最美的你:Flash
  19. 如何快速启动SpringBoot项目
  20. 扁平化你的Qt应用程序

热门文章

  1. 10年程序员的酒后真言
  2. Python计算工具
  3. css hover变成手_如何用CSS设置连接鼠标在上面是变成手型
  4. C++Primer11.2.3节练习
  5. 关于Qt的QProcess进程间双向通信
  6. 马上端午节,会放假吗
  7. 每天bug---用canvas实现手写签名出现轨迹错乱(重要的是苹果手机和安卓手机错乱不一致!)
  8. 如何检查Apple TV遥控器并为其充电
  9. 企业软文营销特立独行才能突出重围
  10. 【C#】Summary注释