zoukankan      html  css  js  c++  java
  • PHP 面向对象 知识点梳理 二

    面向过程和面向对象的区别

    • 面向过程是以过程(步骤)为中心的编程思想。
    • 面向对象是以事物(对象)为中心的编程思想。
    • 面向过程着重于做什么,面向对象着重于谁来做。
    • 面向对象适合大项目开发,主要特点:分工合作。

    类和对象的关系

    • 类就是分类、类别、归类、理论、无形的。
    • 对象是一个一个实体,对象来自于类,类可以产生N多个对象。
    • 在电脑中,先有类,才有对象。没有类,一定没有对象。

    成员属性和成员方法

    • 成员的东西,就是对象的东西。
    • 对象只有两个东西:成员属性、成员方法。
    • 通过”->”来访问对象的属性和方法。
    • 每个对象都会占用内存空间的,而类占用的内存空间很少。每个在内存中地址不一样。

    静态属性和静态方法、类常量

    • 类的东西,就是静态的东西。
    • 静态属性和静态方法是类的东西,只能通过类名来调用,不能通过对象调用。如:Student::$name
    • 静态属性和静态方法,在内存中只有一份,不会随着对象的增加而增加。
    • 例如:可以用静态属性来存储在线人数
    • 常量一旦定义不能修改。静态属性是可以修改。

    构造方法

    • 当使用new关键字创建一个类的对象时,第1个自动调用的方法,就是构造方法。
    • 构造方法的作用:对象初始化。
    • PHP中函数或方法不能重名,换句话说:PHP中的函数或方法,不支持重载。
    • 构造方法的名称是固定的:void function __construct(形参){ ……}
    • 构造方法没有返回值,不能使用return语句。
      构造方法必须是成员方法,不能是静态方法。

    析构方法
    OOP中内存分配情况
    类的封装性
    类的继承性
    类的多态性
    最终类和最终方法
    抽象类和抽象方法

    析构方法
    1、什么是析构方法?

    • 当对象销毁前,自动调用的方法,就是析构方法。
    • 对象销毁的方式有哪些?unset()、网页执行完毕。
    • 析构方法的名称是固定的:void function __destruct(void)
    • 析构方法没有返回值,也没有参数。
    • 析构方法的作用:做一些服务器垃圾回收,节省系统资源(开销),连开数据库连接、删除某些变量等。如:数据库数据返回后,手动关闭数据库连接。

    2、语法格式
    这里写图片描述
    3、对象什么时候销毁
    (1)网页执行完毕,析构方法自动调用,对象也会销毁
    这里写图片描述
    (2)手动删除对象变量,析构方法自动调用,对象也会销毁
    这里写图片描述
    4、实例:统计在线人数
    这里写图片描述这里写图片描述

    OOP中内存的分配情况
    1oop中内存的分配情况
    这里写图片描述
    这里写图片描述
    2、值传递
    JS6中数据类型
    基本数据类型

    Undefined Null Boolean Number String

    复杂数据类型
    Object
    值传递的数据类型:字符串,数值型,布尔值,undefined 、null
    引用传递的数据类型:数组 对象 函数
    PHP中有8中数据类型
    值传递的类型:字符串,整型,浮点型,布尔型,数组,null
    引用出传递的数据类型:对象、资源

    值传递:将一个变量的值,复制一份,传给另一个变量,这两个变量之间没有任何关系,修改其中一个变量的值,另一个变量的值不会变。

    这里写图片描述这里写图片描述
    3、引用传递
    引用传递:将一个变量的地址,复制一份,传给另一个变量。这两个变量之间有联系的。修改其中一个变量的值,则另一个变量也会跟着变。

    对象和资源在内存中如何存储呢?将对象变量名和对象的数据地址存在”栈内存”,而将对象的”真实数据”存在”堆内存”中。
    这里写图片描述
    对象数据在内存中表示
    这里写图片描述
    4、其它类型变成引用传递
    在PHP中,其它的数据类型也可以变成引用传地址,只需要在引用的变量前加”&”符号即可。

    这里写图片描述


    (一)类的封装性

    类的封装性:将敏感的数据保护起来,不受外界访问。
    类的封装性,主要通过权限控制符来实现。
    提示:一般情况下,类中的成员属性都是private、protected权限,然后通过public方法给其赋值。
    2、访问权限修饰符介绍
    Public(公共权限):在任何地方都可以访问,主要是类外、类内、子类中都可以访问。
    Protected(受保护的权限):只能在类内、子类中被访问,在类外不能访问。
    Private(私有的权限):只能在本类中被访问,在类外和子类中无限访问。
    这里写图片描述这里写图片描述

    (二) 类的继承性

    CSS中也有继承,父标记的样式可以被子标记来使用。把所有子标记中的公共的样式,提取出来放到中,其它标记再来继承标记。
    如果一个B类,拥有了A类的所有内容,则我们就说B类继承了A类。
    A类可以称为:基础类、父类、上层类等。
    B类可以称为:派生类、子类、下层类等。
    为什么要继承?主要为了实现项目功能的升级和扩展。项目需要升级和扩展,需要增加很多新功能,或者完善一些功能。但不建议直接修改原始类(原始类太复杂)。创建一个子类,并继承原始类。
    项目功能升级:原来就有的功能,现在对它进行完善。
    项目功能扩展:原来没有的功能,现在增加一个新功能。
    2、继承的语法格式
    这里写图片描述
    3、单继承和多继承
    单继承:子类只能从一个父类来继承功能。大部分编程语言都是单继承,如:PHP、Java、 C#等。
    多继承:子类可以同时从多个父类来继承功能。如:C++是多继承。
    这里写图片描述
    这里写图片描述
    多继承:子类可以同时从多个父类来继承功能。如:C++是多继承。
    这里写图片描述
    5、构造方法和析构方法的继承
    继承:将父类所有的东西全部拿过来,一个不剩的。因此,构造方法和析构方法都可以继承。
    这里写图片描述
    这里写图片描述
    6、parent关键字

    • self用来代表当前类,parent用来代表父类;

    • parent用来调用父类的内容,包括:类常量、静态属性、静态方法、成员方法;

    • self和parent都是通过”::”来调用类的东西。”::”又称为静态调用方式。

      这里写图片描述这里写图片描述

      (三)类的多态

      1、什么是类的多态

      • 类的多态,就是类的多种形态。
      • 类的多态,主要指方法重写和方法重载。但PHP不支持方法重载。
      • 方法重载:在一个类中定义两个同名的方法,一定会报错误的。
      • 方法重写:在子类中定义一个与父类同名的方法,两个同名方法分布在不同类中。
      • 为什么要重写父类的方法?主要是为了实现功能升级。具体是:先将父类中所有内容继承过不,然后再定义一个与父类同名的方法,来实现功能的完善。

      2、方法重写的要求

      • 子类重写方法的名称,要与父类中方法同名。
      • 子类中重写方法的参数个数,要与父类中方法的参数个数一致。
      • 子类中重写方法的类型,要与父类中方法的类型一致。要是成员方法都必须是成员方法,要是静态方法都必须是静态方法。
      • 子类中重写方法的权限,要不低于父类方法的权限。
      • 如果父类的方法权限为public,子类重写方法的权限为public。
      • 如果父类的方法权限为protected,子类重写方法的权限为protected、public。
      • 如果父类的方法权限为private,子类无法继承,也无法重写。

      3、举例说明
      这里写图片描述
      4、构造方法重写
      构造方法也可以重写,构造方法重写,不要求参数个数必须对等,换句话说:两个构造方法的参数个数可以不一样。但是,普通方法重写,参数个数必须对等。

      这里写图片描述
      这里写图片描述

    ————————————————————————————————————————————————————————————

    最终类和最终方法

    • final修饰的类,就是最终类;
    • final修饰的方法,就是最终方法;
    • 最终类:该类不能被继承,只能实例化。
    • 最终方法:该方法不能重写,只能继承使用。
    • 例如,数据库类,就是最终类,不需要子类。
      栗子 :
      这里写图片描述

    抽象类和抽象方法

    • abstract修饰的类就是抽象类。
    • abstract修饰的方法就是抽象方法。
    • 抽象类:该类直接被继承,不能实例化。一般基础类,都是抽象类。
    • 抽象方法:该方法必须要重写,不能继承就完了。
    • 抽象方法就是方法的命名规范,也是一种监督的机制。
    • 抽象方法没有体,也就是没有大括号。
    • 只要有一个方法为抽象方法,该类必须声明为抽象类。
    • 抽象方法必须是成员方法。
    • 抽象类中可以包含其它元素(成员属性、成员方法、常量、静态属性、静态方法)。
    • 抽象类也可以没有抽象方法。
    • 抽象方法必须全部都要重写,重写要符合重写规则。
      栗子:
      这里写图片描述
  • 相关阅读:
    class-dump + DumpFrameworks.pl
    使用 U盘 重装 Mac OSX
    本地化应用程序
    UINavigationBar 总结
    Xcode 杂七杂八
    App 打包并跳过 AppStore 的发布下载
    Summary of Mac Versions
    QT5安装(null)
    如何实现LAN或WAN远程开机?
    DELL 8700重装系统
  • 原文地址:https://www.cnblogs.com/liuqun/p/12655225.html
Copyright © 2011-2022 走看看