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 相关文章推荐
用PHP连接Oracle数据库
Oct 09 PHP
php时间不正确的解决方法
Apr 09 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 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中文输出变成问号的问题
2008/06/05 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
用javascript添加控件自定义属性解析
2013/11/25 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
python格式化字符串实例总结
2014/09/28 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Django框架多表查询实例分析
2018/07/04 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
水果超市创业计划书
2014/01/27 职场文书
小学节能减排倡议书
2014/05/15 职场文书
义和团口号
2014/06/17 职场文书
2015年度党员个人总结
2015/02/14 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
python对文档中元素删除,替换操作
2022/04/02 Python