面向对象编程的三特点: 封装性,继承性(PHP支持单继承),多态性

PHP的一个类必须在一段代码段中,即一个“”class PhpClass{

public $name;

public function toString(){

return 'PhpClass';

}

}

定义成员方法:  [关键词] function 方法名(){...}

访问成员方法: 对象名->成员方法

定义成员变量:  [关键字] 成员变量名

访问成员变量:  对象名->成员变量

关键字可以使用 public、private、protected、static和final中的任意一个

定义类常量:      const 常量名

访问类常量:     类名::常量名public $name;

const PI = 3.1415926;   // 不能有修饰词

public function toString(){

return 'PhpClass';

}

public function printPI(){

echo PhpClass::PI.'

';  // 直接通过类名访问

}

public function printName(){

echo $this->name;   // 注意此处的写法

}

}

$lycClass = new PhpClass();

echo $lycClass::PI.'

'; // 通过对象访问

echo PhpClass::PI.'

';

echo $lycClass->toString().'

';

$lycClass->name = 'Lyc';

$lycClass->printName();

构造方法和析构方法:

构造方法: 不写会默认一个

void __construct([mixed args [,...]])下划线为两个

析构方法:

void __destruct(void)下划线为两个

php使用垃圾回收机制,不用 unset 函数析构方法也会自动被调用class PhpClass{

public $name;

//public function __construct(){} PHP不支持 C++、java 形式上的方法重载

public function __construct($name){

$this->name = $name;

}

public function __destruct(){

echo '析构一下...';

}

}

$lycClass = new PhpClass('lyc');

echo $lycClass->name;

//unset($lycClass); 不写也会调用 __destruct()

继承和多态

继承:在PHP中子类可以继承父类的所有public和protected修饰的成员变量和方法,包括构造方法。

声明继承的格式:

class subClass extendes superClass{

......

}

多态:(覆盖和重载两种,覆盖和c++、java中重写相同)

重载概念和c++、java中的重载概念相同,但实现方式不同,重载实例:class PhpClass{

public $nae;

// PHP中有很多以两个下划线开头的方法,被称为魔术方法***********************

/* __call()方法的作用是: 当程序试图调用不存在或不可见的成员方法时

* PHP会先调用__call()方法来存储方法名及其参数。__call()方法包含

* 两个参数,即方法名和方法参数。其中,方法参数是以数组形式存在的  */

function __call($name, $arguments){

// 通过count($arguments)获得参数个数

$argNum = count($arguments);

//echo $argNum.'***************

';

if($name == 'right'){   // 一下方法调用中的 $this-> 不可省略

switch($argNum){

case 0:

$this->right0();

break;

case 1:

$this->right1($arguments[0]);

break;

case 2:

$this->right2($arguments[0],$arguments[1]);

break;

default:

echo '参数可能多了,我不干了...

';

}

}else if($name == 'left'){

switch($argNum){

case 1:

$this->left1($arguments[0]);

break;

case 2:

$this->left2($arguments[0],$arguments[1]);

break;

default:

echo '参数不对,我不干了...

';

}

}else{

echo '什么也不做...';

}

}

//几种实现重载的方法,方法名不相同

public function right0(){

echo 'right0

';

}

public function right1($arg){

echo 'right1 '.$arg.'

';

}

public function right2($arg1,$arg2){

echo 'right1 '.$arg1.' '.$arg2.'

';

}

public function left0(){

echo 'left0

';

}

public function left1($arg){

echo 'left1 '.$arg.'

';

}

public function left2($arg1,$arg2){

echo 'left1 '.$arg1.' '.$arg2.'

';

}

}

$lyc = new PhpClass();

$lyc->left();           // 此处实现重载

$lyc->left('LEFT');

$lyc->left('LEFT','LYC');

$lyc->right();

$lyc->right('RIGHT');

$lyc->right(123,'LYC');

$lyc->right(123,'lyc','right');

php面向对象的概括图解,简单介绍PHP面向对象相关推荐

  1. php面向对象的概括图解,深入分析php之面向对象

    本篇文章是对php中的面向对象进行了详细的分析介绍,需要的朋友参考下 以前对面向对象仅限于死记硬背型,工作这么久了,回过头来看又是一翻体悟,供大家看看. 1.finalfinal:php5新增一个fi ...

  2. 简单介绍Javascript匿名函数和面向对象编程

    忙里偷闲,简单介绍一下Javascript中匿名函数和闭包函数以及面向对象编程.首先简单介绍一下Javascript中的密名函数. 在Javascript中函数有以下3中定义方式: 1.最常用的定义方 ...

  3. 3.1、PHP面向对象简单介绍

    面向对象简称OOP,面向对象目的就是使项目代码具有重用性.灵活性和扩展性,使项目代码更简洁,易于维护.面向对象将复杂问题模块化,分解成一个一个小的问题,使其简单化. 面向对象可以主要分两个方向学习:1 ...

  4. COM - COM的简单介绍

    在此文章记录一下 COM 的简单介绍,包括 COM 相关技术要点以及编程的过程,方便以后查阅. 目录 1.概述 2.COM结构 2.1.COM对象 2.2.COM接口 2.3.IUnknown接口 2 ...

  5. 机器学习排序之Learning to Rank简单介绍

     机器学习排序之Learning to Rank简单介绍 标签: Learning to Rank学习排序PointwisePairwiseListwise 2015-01-03 21:50 23 ...

  6. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  7. python django框架分析_Django框架模型简单介绍与使用分析

    本文实例讲述了Django框架模型简单介绍与使用.分享给大家供大家参考,具体如下: ORM介绍 ORM Object relational mapping 对象关系映射 把面向对象中的类和数据库表一一 ...

  8. ocbase 数据库 蚂蚁_iOS开发数据库篇—FMDB简单介绍

    iOS开发数据库篇-FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...

  9. 黑盒测试概念简述,黑盒测试优缺点、黑盒用例设计方法简单介绍及黑盒测试方法使用总结

    黑色测试 黑盒测试概念: 黑盒的优缺点介绍: 黑盒测试用例设计方法简单介绍: 黑盒测试方法使用总结: 黑盒测试概念: 又称功能测试或数据驱动测试,是用来检测每个功能是否正常使用.黑盒测试主要意味着测试 ...

最新文章

  1. SQL的连接(join)有哪些常见形式?解释一下?解释 SQL 的 left join 和 right join?
  2. EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
  3. OSChina 周四乱弹 ——程序员怎么撩外国妹子攻略
  4. jQuery 中 data 方法的实现原理
  5. 结对-贪吃蛇游戏-需求分析
  6. Java中获取文件大小的正确方法
  7. HTTP长连接和短连接(转)
  8. asp.net ajax updatepanel中textbox 乱码问题 解决方案
  9. 查询高校名【Python习题】(保姆级图文+实现代码)
  10. Symbolic Math Toolbox——MuPAD
  11. Linux中安装VIM命令
  12. UltraEdit v17.00.0注册机
  13. 人工智能对摄影测量与遥感的影响与挑战——龚健雅院士
  14. 数据压缩作业:清音、浊音、爆破音频谱分析
  15. Java面向对象程序设计(四)-- 继承与多态
  16. [解決]如何利用EXCEL依照固定欄位取出值
  17. 关于系统前端开发的那些事
  18. 小丸子学Hadoop系列之——部署Hbase集群
  19. egg框架结合egg-sequelize 建立数据库链接
  20. 干货 | 日部署 6000 次,携程持续交付与构建平台实践

热门文章

  1. VTK修炼之道71:交互与Widget_观察者/命令模式
  2. 保存delphi中的library path
  3. 【转】C# 中文URL编码
  4. WINDOWS键盘事件的挂钩监控原理及其应用技术
  5. RO段、RW段和ZI段 转载:RO段、RW段和ZI段
  6. 汇编语言王爽第二版-课后答案以及解析
  7. 【CyberSecurityLearning 57】XSS
  8. Java中toString函数干嘛用?
  9. 逆序输出(数组练习)
  10. Ubuntu系统rm命令删除文件没有提示,怎么办?