zoukankan      html  css  js  c++  java
  • 面向对象总计总结

    面向过程、面向对象

    面向过程:就是事情自己来干,代买顺着写

    面向对象:事情由别人来干

    类、对象

    类:是用于描述“某一些具有共同特征”的物体的概念,是某一类物体的总称。

    对象:是指一个具体的“物体”,该物体隶属于某个“类别”(类)。

    类成员(成员属性,成员方法)

    类里面包含成员属性和方法

    静态属性、静态方法

    静态属性和方法,在定义的时候,前面加static

    静态属性就是:只隶属于类本身——也可以看做是所有对象的“共有数据”。

    静态属性的使用:

    通过特殊的语法:::(双冒号语法,也叫范围解释符)

    ::$静态属性名;

    静态方法:方法前面加static

    类名::静态方法名();

    注意1$this在静态方法中不能使用。

    构造__construct()、析构方法__destruct()

    构造方法:在实例化一个对象的同时,给对象赋值,创建完成就具有属性值

    构造方法是“创建”对象的时候会自动调用。

    1,该方法名字是固定的,为:__construct();

    2,该方法必须是普通方法(不能是静态方法)

    3,通常该方法应该是public

    4,通常该方法中使用$this这个关键字来对属性进行赋值

    5,当new 类名()的时候,其实是在调用该构造方法

    6,如果一个类中定义了构造方法,则实例化该类时就会调用该方法,且实例化时的参数需要跟构造方法的参数匹配

    析构方法:__destruct()

    析构方法是“销毁”对象的时候会自动调用。

    说明:

    1,析构方法通常不太需要去定义。

    2,析构方法不能调用。

    3,析构方法不能有形参。

    4,析构方法中可以用于清理一些在php代码结束后不能清理的数据,如生成的文件。

    对象销毁的几个情形:

    脚本程序运行结束,自动销毁;

    明确地unset()一个对象变量,则被销毁;

    改变对象变量的值,被销毁;

    实际上,更本质来说,当一个对象(new 出来的对象)没有任何一个变量指向它的时候,该对象就会被自动销毁——自然,如果整个程序结束,也会销毁。

    $this、self、parent

    $this$this是一个“伪对象”,代表当前所属类的当前对象。

    Self:含义:代表当前类

    使用:通常只能在某个类的某个方法内部代表该类的名称。

    Parent:parent通常用于在子类中调用父类的成员的时候使用,多数通常就是使用父类的“静态类”成员。——因为parent代表的类,而非对象。

    public、protected、private、static

    Public:公用的(都可以用)

    Protected:被保护的(可以在当前类或当前类的上下级具有继承关系的类中访问)

    Private:私有的(只能在其所在的类中访问)

    Static:静态的

    重写、重载__set()__get()__isset()__unset()

    重写:用在继承中,子类重写

    下级的访问控制权限应该不低于上级的访问控制权限:

    上级:public  下级:只能public

    上级:protected  下级: protected, public

    上级:private   下级:private  protected  public——实际此情况无意义。

    私有的不能覆盖,而是完全当作自己全新的。

    重载:用在类里面

    取值:$v1 = 对象->属性;

    赋值:对象->属性 = XX值;

    判断是否存在:isset(对象->属性;)

    销毁:unset(对象->属性;)

    所谓属性重载,就是在面对上述4种情形的属性使用场景中,该对象如果来“应对”的问题。

    如果某属性不存在,但在语法中使用如下情形,则会发生:

    取值:$v1 = 对象->属性; ===>自动调用类中的__get()方法

    赋值:对象->属性 = XX值; ===>自动调用类中的__set()方法

    判断是否存在:isset(对象->属性;) ===>自动调用类中的__isset()方法

    销毁:unset(对象->属性;) ===>自动调用类中的__unset()方法

    前提都是:类中要预先定义好这些方法。

    __call() __callStatic() __clone()

    __call()

    当使用一个对象调用一个不存在的普通方法的时候,会自动去调用预先定义好的"__call"方法。

    其中,该方法必须带2个参数

    __callStatic():当使用一个对象(类)调用一个不存在的静态方法的时候,会自动去调用预先定义好的"__callStatic"方法。其中,该方法必须带2个参数。

    __clone():使用clone运算符进行克隆,则就也会“生成”新对象。

    extendsabstract

    Extends:继承,子类继承父类的属性和方法

    Abstract:抽象方法

    抽象方法是一个没有方法体(也不含大括号)的方法定义“头”而已。

    前面需要加上abstract

    比如:abstract  function  f1($x1, $y, $m) //注意,后面一定有分号。

    抽象方法有什么用?

    其实跟抽象类一样,配合抽象类,来实现对下级类的“行为规范”。

    即相当于要求下级类去完成该功能(动作),但自己是不做的。

    单例:

    一些类,从头到尾(程序运行的开始到结束),都只需要一个对象,就可以完成所有任务。

    1、私有属性(值是对象)

    Private 属性;

    2、私有构造方法(不能new)

    Private 方法;

    3、提供获取对象的方法(这里面判断是否存在)

    Function 方法;

    4、私有克隆

    Clone

    面向对象三大特性:封装、继承、多态

    封装:将类封装,直接调用,只需要知道实现的效果,不需要知道怎么实现的

    继承:子类继承父类

    多态:多个子类继承于同一父类,但是子类本身属性不同

  • 相关阅读:
    prometheus,alertmanager 报警配置详解
    使用 kubeadm 搭建 kubernetes1.10 集群
    kibana-sentinl-监控报警
    ELK集群模式部署
    mongo 误操作恢复数据
    mongo 实时同步工具 mongosync
    移动端巨坑——iphone6Plus默认设置不使用sessionStorage
    iphone6 Plus seesionStorage失效
    移动端手势拖拽排序神器Sortable.js
    vue使用swiper(转)
  • 原文地址:https://www.cnblogs.com/loveMis/p/8515883.html
Copyright © 2011-2022 走看看