php学习笔记之面向对象


Posted in PHP onNovember 08, 2014

public   公有的:本类,子类,外部对象都可以调用
protected 受保护的:本类 子类,可以执行,外部对象不可以调用
private 私有的:只能本类执行,子类与外部对象都不可调用
面向对象编程的三大特点

1)封闭性

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

2)继承性

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

3)多态性

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

类的定义

一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)。
和很多面向对象的语言一样,PHP也是通过class关键字加类名来定义类的。类的格式如下:

<?php

  Class myobject{

    //……

}

?>

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

类的对象称为类的一个实例。要创建一个类的实例,必须使用 new 关键字。
001ZpQGYty6MeYnSNUh25&690

<?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";

    

    //通过把变量设为null,可以触发析构函数的调用

    //当对象不再使用的时候会触发析构函数

    $james = null;

    echo "from now on James will not be used.\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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
php strrpos()与strripos()函数
Aug 31 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
PHP中session变量的销毁
Feb 27 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
php生成数字字母的验证码图片
Jul 14 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP中->和=>的意思
Mar 31 PHP
php学习笔记之基础知识
Nov 08 #PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 #PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 #PHP
php中file_get_contents与curl性能比较分析
Nov 08 #PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 #PHP
PHP中使用循环实现的金字塔图形
Nov 08 #PHP
php调用新浪短链接API的方法
Nov 08 #PHP
You might like
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
python使用udp实现聊天器功能
2018/12/10 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
详解如何设置Python环境变量?
2019/05/13 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
5.1手机促销活动
2014/01/17 职场文书
女娲补天教学反思
2014/02/05 职场文书
教师自我鉴定范文
2014/03/20 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
大学生创业计划书
2014/08/14 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2014年学生会工作总结
2014/11/07 职场文书
交警失职检讨书
2015/01/26 职场文书
介绍信格式样本
2015/05/05 职场文书
行政二审代理词
2015/05/25 职场文书
教师节随笔
2015/08/15 职场文书