php面向对象的概括图解,简单介绍PHP面向对象
面向对象编程的三特点: 封装性,继承性(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面向对象相关推荐
- php面向对象的概括图解,深入分析php之面向对象
本篇文章是对php中的面向对象进行了详细的分析介绍,需要的朋友参考下 以前对面向对象仅限于死记硬背型,工作这么久了,回过头来看又是一翻体悟,供大家看看. 1.finalfinal:php5新增一个fi ...
- 简单介绍Javascript匿名函数和面向对象编程
忙里偷闲,简单介绍一下Javascript中匿名函数和闭包函数以及面向对象编程.首先简单介绍一下Javascript中的密名函数. 在Javascript中函数有以下3中定义方式: 1.最常用的定义方 ...
- 3.1、PHP面向对象简单介绍
面向对象简称OOP,面向对象目的就是使项目代码具有重用性.灵活性和扩展性,使项目代码更简洁,易于维护.面向对象将复杂问题模块化,分解成一个一个小的问题,使其简单化. 面向对象可以主要分两个方向学习:1 ...
- COM - COM的简单介绍
在此文章记录一下 COM 的简单介绍,包括 COM 相关技术要点以及编程的过程,方便以后查阅. 目录 1.概述 2.COM结构 2.1.COM对象 2.2.COM接口 2.3.IUnknown接口 2 ...
- 机器学习排序之Learning to Rank简单介绍
机器学习排序之Learning to Rank简单介绍 标签: Learning to Rank学习排序PointwisePairwiseListwise 2015-01-03 21:50 23 ...
- Django - Django框架 简单介绍
Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...
- python django框架分析_Django框架模型简单介绍与使用分析
本文实例讲述了Django框架模型简单介绍与使用.分享给大家供大家参考,具体如下: ORM介绍 ORM Object relational mapping 对象关系映射 把面向对象中的类和数据库表一一 ...
- ocbase 数据库 蚂蚁_iOS开发数据库篇—FMDB简单介绍
iOS开发数据库篇-FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...
- 黑盒测试概念简述,黑盒测试优缺点、黑盒用例设计方法简单介绍及黑盒测试方法使用总结
黑色测试 黑盒测试概念: 黑盒的优缺点介绍: 黑盒测试用例设计方法简单介绍: 黑盒测试方法使用总结: 黑盒测试概念: 又称功能测试或数据驱动测试,是用来检测每个功能是否正常使用.黑盒测试主要意味着测试 ...
最新文章
- SQL的连接(join)有哪些常见形式?解释一下?解释 SQL 的 left join 和 right join?
- EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
- OSChina 周四乱弹 ——程序员怎么撩外国妹子攻略
- jQuery 中 data 方法的实现原理
- 结对-贪吃蛇游戏-需求分析
- Java中获取文件大小的正确方法
- HTTP长连接和短连接(转)
- asp.net ajax updatepanel中textbox 乱码问题 解决方案
- 查询高校名【Python习题】(保姆级图文+实现代码)
- Symbolic Math Toolbox——MuPAD
- Linux中安装VIM命令
- UltraEdit v17.00.0注册机
- 人工智能对摄影测量与遥感的影响与挑战——龚健雅院士
- 数据压缩作业:清音、浊音、爆破音频谱分析
- Java面向对象程序设计(四)-- 继承与多态
- [解決]如何利用EXCEL依照固定欄位取出值
- 关于系统前端开发的那些事
- 小丸子学Hadoop系列之——部署Hbase集群
- egg框架结合egg-sequelize 建立数据库链接
- 干货 | 日部署 6000 次,携程持续交付与构建平台实践