public 公有的:本类,子类,外部对象都可以调用

protected 受保护的:本类 子类,可以执行,外部对象不可以调用

private 私有的:只能本类执行,子类与外部对象都不可调用

面向对象编程的三大特点

1)封闭性

封闭性,也可以称为信息隐藏。就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系。对于用到该类的开发人员,只要知道这个类如何使用即可,而不用去关心这个类是如何实现的。这样做可以让开发人员更好地把精力集中起来专注别的事情,同时也避免了程序之间的相互依赖而带来的不便。

2)继承性

继承性就是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并可以重写或添加新的属性和方法。继承这个特性简化了对象和类的创建,增加了代码的可重性。继承分单继承和多继承,PHP所支持的是单继承,也就是说,一个子类有且只有一个父类。

3)多态性

多态性是指同一个类的不同对象,使用同一个方法可以获得不同的结果,这种技术称为多态性。多态性增强了软件的灵活性和重用性。

类的定义

一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)。

和很多面向对象的语言一样,PHP也是通过class关键字加类名来定义类的。类的格式如下:

代码如下:<?php

Class myobject{

//……

}

?>

定义:物以类聚,把具有相似特性的对象归到一个类中,类定义了这些相似对象拥有的相同属性和方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。

类的对象称为类的一个实例。要创建一个类的实例,必须使用 new 关键字。<?php

//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写

class NbaPlayer{

public $name = "Jordan"; //定义属性

public $height = "198cm";

public $team = "Bull";

public $playerNumber = "23";

//定义方法

public function run(){

echo "Running\n";

}

public function dribblr(){

echo "Dribbling\n";

}

public function pass(){

echo "Passing\n";

}

}

//类到对象的实例化

//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号

$jordan = new NbaPlayer();

//对象中的属性成员可以通过"->"符号来访问

echo $jordan->name."\n";

//对象中的成员方法可以通过"->"符号来访问

$jordan->dribble();

$jordan->run();

?>

成员方法

类中的函数被称为成员方法。函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。

下面就来扩充上面的myobject类,为它添加一个成员方法,代码如下:<?php

classmyobject{

function getobjectname($name){

echo "商品名称为:".$name;

}

}

?>

该方法的作用是输出商品名称,商品名称是通过方法的参数传进来的。

类是一个抽象的描述,是功能相似的一组对象的集合。如果想用到类中的方法和变量,首先就要把它具体落实到一个实体,也就是对象上。

类常量

既然有变量,当然也会有常量了。常量就是不会改变的量,是一个恒值。众所周知的一个常量就是圆周率Pi。定义常量使用关键字const如:

ConstPI=3.14159;

构造函数

PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

析构函数<?php

//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写

class NbaPlayer{

public $name = "Jordan"; //定义属性

public $height = "198cm";

public $team = "Bull";

public $playerNumber = "23";

//构造函数,在对象被实例化的时候自动调用

function __construct($name,$height,$weight,$team){

echo "It is an NbaPlayer constructor\n";

$this->name = $name;

//$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法

$this->height = $height;

$this->weight = $weight;

$this->team = $team;

}

//定义方法

public function run(){

echo "Running\n";

}

public function dribblr(){

echo "Dribbling\n";

}

public function pass(){

echo "Passing\n";

}

}

//类到对象的实例化

//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号

$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");

//对象中的属性成员可以通过"->"符号来访问

echo $jordan->name."\n";

//对象中的成员方法可以通过"->"符号来访问

$jordan->dribble();

$jordan->run();

//每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数

$james = new NbaPlayer("James","203cm","120kg","Heat")

echo $james->name."\n";

?>

析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

对象的引用<?php

//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写

class NbaPlayer{

public $name = "Jordan"; //定义属性

public $height = "198cm";

public $team = "Bull";

public $playerNumber = "23";

//构造函数,在对象被实例化的时候自动调用

function __construct($name,$height,$weight,$team){

echo "It is an NbaPlayer constructor\n";

$this->name = $name;

//$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法

$this->height = $height;

$this->weight = $weight;

$this->team = $team;

}

//析构函数,在程序执行结束的时候会自动调用

//析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源

function __destruct(){

echo "Destroying".$this->name."\n";

}

//定义方法

public function run(){

echo "Running\n";

}

public function dribblr(){

echo "Dribbling\n";

}

public function pass(){

echo "Passing\n";

}

}

//类到对象的实例化

//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号

$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");

//对象中的属性成员可以通过"->"符号来访问

echo $jordan->name."\n";

//对象中的成员方法可以通过"->"符号来访问

$jordan->dribble();

$jordan->run();

//每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数

$james = new NbaPlayer("James","203cm","120kg","Heat")

echo $james->name."\n";

//对象的引用用于访问对象的属性和方法,$james,$james1和$james2都是对象的引用

//$james和$james1是对象的两个独立引用

//$james2是$james的影子,使用对象的同一个引用,任何一个赋值为null相当于删除了同一个引用

$james1 = $james;

$james2 = &$james

$james = null;

echo "from now on James will not be used.\n"

?>

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php面向对象手册,php学习笔记之面向对象相关推荐

  1. php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程

    面向对象设计是php程序开发中一个很重要的内容块,如果你想成为高级php程序员我们必须知道面向对象设计具体用法与写法. 维护简单 模块化是面向对象编程中的一个特征.实体被表示为类和同一名字空间中具有相 ...

  2. 学习笔记----MATLAB面向对象编程入门02--类的方法、构造函数

    本系列内容为<MATLAB面向对象编程–从入门到设计模式>学习笔记,特此说明. 定义类的方法 类的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Comm ...

  3. Python3学习笔记-面向对象

    一.面向对象和面向过程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思 想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数 1 ...

  4. JS学习笔记之面向对象 5.3

    1 面向对象与面向过程 1.1 面向过程编程 POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一 ...

  5. linux xlib函数手册,Xlib 学习笔记

    Xlib学习笔记第一章1.2 X Window System概念display:由键盘,鼠标和一个或多个屏幕组成的一个工作站screen:一个display可以有多个screen server-cli ...

  6. JQuery入门手册(学习笔记整理)

    JQuery入门手册 基础 学习重点 技术介绍 jQuery使用 jQuery对象与DOM对象的区别 jQuery对象与DOM对象转换 选择器 选择器语法 基本选择器 层级选择器 input标签选择器 ...

  7. UML和模式应用学习笔记-1(面向对象分析和设计)

    大学时曾经开过<UML和模式应用>的课程,当时没有引起足够的重视,只为了应付考试并没有真正掌握书中的内容:现在工作中经常要用到UML及设计模式,决定每周花点时间重新对书中的内容进行学习:本 ...

  8. Python学习笔记:面向对象高级编程(完)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. Python学习笔记:面向对象高级编程(中下)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. docker 核心概念整理
  2. python读取raw数据文件_Python 读写文件中数据
  3. css 回到首页按钮,js+css实现回到顶部按钮(back to top)
  4. 均胜群英:PC+移动端数字化管理,两年降本7%,人均产值提高300%
  5. Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
  6. Nginx安装的两种方法
  7. Pr 入门教程,如何处理图片文件?
  8. 线性回归中的梯度爆炸
  9. 数据库系统概论课后习题答案(第五版 王珊、萨师煊)
  10. qvod(快播)电影批量下载器(轻松下载连续剧)
  11. 什么是OCR?如何使用OCR文字识别软件?
  12. 文曲星猜数字游戏java代码_Python版的文曲星猜数字游戏代码
  13. [docker]dockerfile简介与应用
  14. 直接渲染管理器(Direct Rendering Manager, DRM)
  15. Ceph 集群监控之Calamari 安装部署
  16. 二级菜单原生js实现
  17. nginx代理图片和视频
  18. 中国省份名字的由来!
  19. 想学设计模式、想搞架构设计,先学学 UML 系统建模吧
  20. 华为车BU机器学习算法工程师面试经验

热门文章

  1. 【嵌入式系统】二、初识 Tiva TM4C123G系列开发板
  2. Linux防火墙入门:基本观念(转)
  3. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式
  4. I219-V 14代 win7x64驱动程序
  5. 基于SEIR模型的网络医疗众筹传播建模与仿真分析
  6. ASO优化:应用市场应该怎么做马甲包?
  7. 如何解决chrome flash 过期
  8. 亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统
  9. 万变不离其宗之ZYNQ启动介绍
  10. java数组:排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。`