PHP面向对象的三大特性
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面向对象的三大特性相关推荐
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- 面向对象的三大特性之继承
# 面向对象的三大特性之继承# 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好 (如机器人) # 当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 (动物-- ...
- 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?
Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...
- 面向对象之三大特性:继承,封装,多态
python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...
- Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数)...
Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数) https://mubu.com/doc/1AqL_M0IbW 继承之钻石继承 多态 封装 几个装饰 ...
- polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- C++ 面向对象程序三大特性之 继承
目录 继承的概念 继承的定义及使用 继承方式和访问权限 基类和派生类对象的赋值转换 继承中的各成员的作用域 派生类的默认成员函数 构造函数 拷贝构造 赋值运算符重载函数 析构函数 继承与友元 继承与静 ...
- 面向对象的三大特性:封装、继承、多态
面向对象的三大特性 面向对象的三大特性:封装.继承.多态 封装 封装,成员变量的封装,保证了数据的安全性.封装的好处:过滤了不合理的值.屏蔽内部的赋值过程.让外界不必关注内部的细节 Set方法 1. ...
- 面向对象:三大特性与五大原则
面向对象:三大特性与五大原则 面向对象(Object Oriented, OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布 ...
- java面向对象特性_java面向对象编程三大特性
一说到java面向对象编程就想到面向对象的三大特性,封装,继承和多态,下面我们来具体分析以下这三大特性在编程中是如何具体体现的. 封装 将类的属性和具体实现细节隐藏,只提供相关的接口和方法来对隐藏信息 ...
最新文章
- python信号与槽_Python信号和插槽(1),python,与,一
- 21天实战人工智能系列:人工智能产品经理最佳实践(1)
- MySQL基础操作(一)
- java基础类的继承_JAVA核心技术I---JAVA基础知识(类的继承)
- 各大厂大数据精品分享汇总(进阶版)
- 作团队感悟(4)----分享的心态
- matlab如何画出来地球,matlab绘制地球
- php fseek函数,php fseek函数怎么用 - fseek
- 百度翻译使用经验(Python版)
- pmp是什么意思啊?
- JavaGui 02 Pannel-面板
- 音乐播放器制作 (HTML + CSS + JavaScript)
- CC3200 —— No.1 环境搭建(更新于2020年5月1日)
- 服务器系统浏览器打不开,W7系统浏览器打不开怎么办
- ES6结构赋值,一篇就够
- costmap_2d详解3:costmap_2d_ros.cpp
- linux账号权限的一些总结
- 遇见最美的你:Flash
- 如何快速启动SpringBoot项目
- 扁平化你的Qt应用程序