php面向对象简单概括

互联网 20-5-29
基本知识

类:具有相同属性或方法的一类集合体。比如雪佛兰汽车是一个雪佛兰汽车类,奔驰汽车是一个奔驰汽车类,宝马汽车是一个宝马汽车类,而这三个类又是汽车大类的子类。对象:类的一个具体实现,比如宝马Q5就是宝马汽车类的一个具体实现。对象地使用是放在内存中的。一下让我们了解一下对象在内存中的分配

使用面向对象,就是灵活地使用以上两个知识点。让我们来创建和使用类与对象

<?php     /**     *新建一个类     */     class newClass{        public $a;        public $b;        public function funA(){            echo "I am function A";         }        public function funB(){            echo "I am function B";         }     }    /**     *使用类创建对象     */     $opt=new newClass();     $opt->a="opt";//将opt对象中的a属性赋值为opt     $opt->funA();//打印出"I am function A"?>

修饰符:在定义类与类中的属性时,我们可以使用如下三个修饰符,若不加,则默认为publicpublic:权限最大protected:权限范围在其本身与其子类private:权限范围仅在其本身<font color="blue" size="4">构造函数与析构函数</font>:在我们对类实例化创建对象时,往往需要对对象进行初始化,这时,我们就需要在类中定义一个构造方法。当我们使用完对象时,就需要释放对象,以减少内存的使用,这时我们就需要使用析构方法。在php中我们使用__construct()方法与__destruct(),如下代码

<?php class newClass{     public $a;     public $b;     public function __construct($a,$b){         $this->a=$a;         $this->b=$b;         echo "我是构造函数";     }     public function __destruct(){         echo "我是析构函数";     } } ?>

封装性

<?php class privateClass {     private $a;     private $b;     private function privateFun()     {         echo "我是封装的方法";     } } ?>

这样,当我们创建对象时就不能调用私有的属性与方法。但是我们可以通过使用魔术方法来对这些私有属性与方法进行访问。__set()与__get()的使用通过__set()方法我们可以通过对象直接设置成员属性值通过__get()方法我们可以通过对象直接获取成员属性值

<?php class setClass {              private $a;             private $b="ww";             public function __set($oldValue,$newvalue){          $this->$oldValue=$newvalue;     }             public function __get($newvalue){                     return $newvalue;     } }     $opt= new setClass();     $opt->a="sss";//直接设置私有属性值     echo $opt->b;//直接读取私有属性值 ?>

__isset()与__unset()的使用通过__isset()直接查看对象中私有属性是否存在通过__unset()直接删除对象中的私有属性

<?php class issetClass {     private $a;     private $b = 'www';     function __isset($privateName)     {         if (isset($privateName)) {             return 1;         } else {             return 0;         }     }     function __unset($privateName)     {         echo "销毁" . $privateName;     } } $opt = new issetClass(); echo isset($opt->$b); var_dump(unset($opt->$b));?>

继承性

当我们编写多个类时,常常多个类具有相同的属性与方法,为了简化代码我们引入了继承的概念,子类可以继承父类的一些属性与方法,减少了冗余代码地编写。

<?php     class parentClass{     }         class childClass extends parentClass{     }     ?>

如上,childClass是parentClass的子类,php仅支持单继承,即一个子类只有一个父类,但父类可以有多个子类。

重写父类方法当父类中的方法不能满足子类的使用时我们可以重写父类方法。但当我们又想在子类使用父类的方法时,我们可以使用如下语法:parent::方法名几个重要的关键字

3.1 final

final可以修饰类与方法,不能修饰成员属性;被final修饰的类不能继承,而用final修饰的方法在子类中不能被重写

3.2 static

static可以修饰成员属性与成员方法,不能修饰类;使用static修饰的成员与方法可以通过类直接使用,使用如下语法:类名::\$属性名或方法名();在类中使用时通过如下语法:self::\$属性名或方法名.

3.3 const

在类中声明常量使用const,而不是使用define();比如 const TT=90当使用常量时直接使用如下语法self::常量名

3.4 instanceof

3.5 trait

php只能进行单继承,但它同时提供了另类方式来进行代码复用,解决单继承问题。如下

<?php  trait testA {     function a()     {     } }  trait testB {     function b()     {     } }  class testC {     use testA, testB;      function c()     {     } } ?>

抽象技术

<?php abstract class testClass { $a; $b;     abstract function testFun();     abstract function testFun1();     public function optFun()     {         echo "抽象类中的抽象方法";     }//抽象类可以有非抽象方法 } class childClass extends testClass {     function testFun()     {         echo "子类中实现抽象方法";     }     function testFun1()     {         echo "子类实现抽象方法";     } } abstract child1Class extends testClass { }//子类是抽象方法可以不实现父类的抽象方法?>

抽象技术为子类的声明提供了一种规范,限制了类的实例化(抽象类不能实例化)。

接口技术

接口是一种特殊的抽象类,接口中只能声明抽象类与常量声明接口使用interface,实现接口使用implements,修饰符只能是默认的public;一个子类可以继承多个接口,同时继承一个父类

<?php interface newInterface {     const V = 12;     abstract function fun1();     abstract function fun2(); } interface newInterface1 {     abstract function fun3();     abstract function fun4(); } class parentClass {     function fun5()     {         echo "fun5";     } } class optClass extends parentClass implements newInterface, newINterface1 {     function fun1()     {         echo "fun1";     }     function fun2()     {         echo "fun2";     }     function fun3()     {         echo "fun3";     }     function fun4()     {         echo "fun4";     } } ?>

多态

在php中多态地实现需要一个类通过多个子类地继承实现,如果一个类的方法在多个子类中重写并实现不同的功能,我们称之为多态。

推荐教程:《PHP教程

以上就是php面向对象简单概括的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 面向对象
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:__construct() 和 __destory() 在 PHP 中需要注意的地方

相关资讯