当前位置: 首页 > 编程笔记 >

php学习笔记之面向对象

陆文博
2023-03-14
本文向大家介绍php学习笔记之面向对象,包括了php学习笔记之面向对象的使用技巧和注意事项,需要的朋友参考一下

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

 类似资料:
  • 本文向大家介绍JavaScript学习笔记之JS对象,包括了JavaScript学习笔记之JS对象的使用技巧和注意事项,需要的朋友参考一下 默认对象   日期对象Date,   格式:日期对象名称=new Date([日期参数])   日期参数:   1.省略(最常用);   2.英文-数值格式:月 日,公元年 [时:分:秒]   如:today=new Date("October 1,2008

  • 本文向大家介绍JavaScript学习笔记之Cookie对象,包括了JavaScript学习笔记之Cookie对象的使用技巧和注意事项,需要的朋友参考一下 JavaScript Cookie   Cookie对象:   Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cookie数据)。   Cookie文件由所访问的Web站点建立,以长久的保存客户端与Web

  • 本文向大家介绍JavaScript学习笔记之创建对象,包括了JavaScript学习笔记之创建对象的使用技巧和注意事项,需要的朋友参考一下 JavaScript 有Date、Array、String等这样的内置对象,功能强大使用简单,人见人爱,但在处理一些复杂的逻辑的时候,内置对象就很无力了,往往需要开发者自定义对象。 从JavaScript定义上讲对象是无序属性的集合,其属性可以包含基本值、对象

  • 本文向大家介绍php学习笔记之基础知识,包括了php学习笔记之基础知识的使用技巧和注意事项,需要的朋友参考一下 php学习至今一年有余,笔记积累挺多的,也挺杂的,写篇文章整理一下吧。 php基础部分 PHP 输出文本的基础指令:echo 和 print。 echo和print的区别 echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) echo

  • 本文向大家介绍C#中面向对象编程机制之继承学习笔记,包括了C#中面向对象编程机制之继承学习笔记的使用技巧和注意事项,需要的朋友参考一下 继承反应了类和类之间的关系。 世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的结构清晰易读,而且易于代码的扩展和维护。 C#的继承只能继承自一个基类,这一点不同于C++的继承。 C#的继承具有传递性,即

  • 本文向大家介绍C#中面向对象编程机制之多态学习笔记,包括了C#中面向对象编程机制之多态学习笔记的使用技巧和注意事项,需要的朋友参考一下 C#的多态性: 我的理解是:同一个操作,作用于不同的对象时,会有不同的结果,即同一个方法根据需要,作用于不同的对象时,会有不同的实现。 C#的多态包括:接口多态,继承多态。 其中继承多态又包括通过虚拟方法实现的多态和通过抽象方法实现的多态性 例如:基类动物都有吃的