码迷,mamicode.com
首页 > Web开发 > 详细

PHP 面向对象基础

时间:2018-09-02 23:46:24      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:通过   const   魔术   耦合   load   lstat   结束   返回   vat   

 

本文主要阐述面向对象的基本概念,如有问题,还请斧正。

首先说明,涉及的一些知识点,算是提纲吧 。

 1 类的基本概念;2 对象的基本概念;3 访问控制;4 构造函数,析构函数;5魔术方法;6 接口;7 多态;8 封装;9继承;10 static与final

 

一,类的基本概念

        1 什么是类? 类即拥有相同属性和行为的一个集合体。举个例子 ,我们日常生活中的车 是一个类,车拥有相同的属性(颜色,大小,重量)和行为(行驶);又如动物也是一个类,动物拥有相同的属性(大小)和行为(吃,喝);我们将这些拥有相同的属性和行为的一些事物叫做一个类。

        2 在程序中如何申明一个类,用关键字 class  例


class Person{
    //  属性;
   //   行为;
}
  在这里我们申明了一个人类

二 ,对象的基本概念

        1 什么是对象?  对象即是一个具体的事物,也或者是一个抽象的事物,对象时从类实例化而来。例: 上面我们说车是一个类,那么宝马,奔驰等就是对象,总结一句,对象就是将类具体化了。

        2 对象的两个部分

              (1)对象的组成元素,是对象的数据模型,用于描述对象的数据,又别称为属性;

              (2)对象的行为,对象的行为模型,用于描述对象具体能做什么事情,又被称为方法;

        3 对象的两个特征

              (1)高内聚, 即在对象的内部属性和方法对内是可见,在对象的内部属性和方法都是可以被修改和访问的;

              (2)低耦合  ,  在对象的外部,我们只能看见一部分的方法和属性;涉及到访问控制,后文在述。

       4 如何实例化一个对象,用关键字 new   上面我们申明了一个人类,现在我们将这个人类  实例化。

  实例化一个张三的对象

$zhangsan = new Person();

 

  三 , 访问控制 :主要用修饰符public  protected private 来控制访问的权限; 例

class Person{
   
     public       $name;  //公有的,可以被任何访问
     protected    $sex;   // 受保护的,可以被自身和子类访问
     private      $age;  // 私有的,只能被自己访问

}

 

 

    

 四,  构造函数,和析构函数

     1  构造函数 ,构造函数为类中的一个方法,当我们实例化这个类的时候 自动调用,构造函数的目的是为了完成一些初始化的工作。用__construct 例

class Person{
   
     public       $name;  //公有的,可以被任何访问
     protected    $sex;   // 受保护的,可以被自身和子类访问
     private      $age;  // 私有的,只能被自己访问
    
    //当我们new这个类时 自动调用
     public  function __construct(){
       echo "你好";
 }
}

 

      2 析构函数  ,当对象被销毁的时候自动调用,我们常用析构函数来销毁变量,以达到释放内存的 目的。 用 __desturct  写法同上。 

五, 魔术方法,原理和构造函数差不多,在特定的情况下自动调用。

  1.     __tostring    当对象被作为字符串使用时,自动调用,返回字符串;
  2.     __invote       当对象被作为方法使用时,自动调用;
  3.     __call           当对象访问不存在的方法或者未公开的方法是,自动调用,返回被调用的函数名,和参数数组;
  4.     __callStatic  当对象访问不存在的静态方法,或者未公开的时候自动调用,返回调用函数名,和参数数组;
  5.     __get           对象访问不可访问的属性时候,自动调用,返回不可访问的属性名;
  6.     __set           给不可访问的属性赋值时,自动调用,返回属性名,和赋值参数;
  7.     __isset        用isset()/empty()检测不可访问的属性时,自动调用,返回检测的属性名;
  8.     __unset      用unset()删除不可访问的属性时,自动调用,返回删除属性名;
  9.     __clone      使用clone关键字克隆对象时,自动调用,作用是为新的克隆对象赋初始值;
  10.     __sleep      对象序列化时,自动调用,返回一个数组,数组中的值就是可以序列化的属性;
  11.     __wakeup  对象反序列化时,自动调用,为反序列化新产生的对象,赋初始值;
  12.     __autoload   需要在内外部声明函数。当实例一个未申明的类时,自动调用,传递实例化的类名,可以使用类名自动加载对应的类文件;

六,接口  

      1  什么是接口?  接口提供了一组实现接口的类    必须实现的方法组合  ,接口里面的方法没有方法体(具体的执行代码)接口里面的方法都是抽象方法。

      2   如何声明一个接口   例:

interface Inter {

    public function eat(); //没有具体的方法体
    public function run();
   
}

 

   3  当一个类去实现一个接口的时候 必须实现接口里面的方法,除非这个类时抽象类 例 

 

 // 申明一个接口
interface Inter {
    public  funtion eat();
    public  funtion run();
}
//一个类去实现接口
class  Person implements Inter{
  
   //这个类必须去实现接口中的方法
   public  function eat(){
     //具体的方法
}
   public function run (){
    //具体的方法
}

}

 

  4  接口可以被继承,用关键字extends   写法   interface inter1 extends Inter {  } inter1接口继承了Inter接口,接口的继承可以是一对多,即一个接口可以继承多个父接口。注意:当一个类去实现了一个子接口的时候,它也必须实现父接口里面的抽象方法。

七 ,多态

    1  多态是一种现象,当一个类被多个子类所继承,如果这个类中的方法在子类中表现出了不同的功能,我们称这种现象为多态;

八 ,封装

    1  封装 通过访问修饰符 将类中不需要外部访问的属性和方法进行私有化处理,实现访问控制,让使用者只能通过我们提供的方法对属性和方法进行访问。

    2  封装的好处,可以重复调用避免了代码的冗余。

九 ,继承   类可以被继承,子类拥有父类的属性和方法,子类可以修改父类的成员,我们称之为重写,当子类 重写父类的方法后,按照子类的方法运行  通过关键字extends 实现继承

  例子  

//声明一个类
class Person{ 
      $name;  
     public  function say(){
       echo $this->name."今天天气不错哦"//$this php中的伪变量,代表自身对象我们在类内部访问属性时一般用$this 
 }
}
//继承一个类
class Man extends Person{
      //将父类的say方法重写
     public function say(){
       echo  "晚饭吃什么?"
 }
}

 

十, 关键字 final 和static

    1  final   php5中引入关键字final  当用final 修饰类的时候这个类可以理解为最终类,这个类不能被继承;当用final修饰方法时,这个方法可以就理解为最终方法,不能够被重写。

    2 static  静态成员   //用static 修饰的属性和方法被称为静态属性和静态方法

        (1)静态属性保存了公有的数据;

        (2)静态方法只能访问静态属性;

        (3)静态成员不要要实例化就可以访问,

        (4)静态方法不能够去调用非静态成员,然而非静态方法则可以调用静态成员,因为静态成员在加载的时候已经产生,而非静态成员此时没有实例化诞生。

        (5)如何访问?  在类内部访问 用 self 或者static访问  格式 :  self/static::$属性名 ;    parent::$属性名访问父类属性  在类外部调用 :  类名::$属性。

 

结束语   :以上是关于面向对象编程的一些基本概念,以后闲的时候在弄些其他东西,话说这是在下的第一篇博客,

2018-09-02    21:39:26

PHP 面向对象基础

标签:通过   const   魔术   耦合   load   lstat   结束   返回   vat   

原文地址:https://www.cnblogs.com/jia1001/p/9575486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!