zoukankan      html  css  js  c++  java
  • php基础-面向对象

    面向对象和面向过程的区别:优缺点

    类 : 具有相同特性和行为的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
    在面向对象的编程语言中,“类” 是一个独立的程序单位,它应该有一个类名并包括 “属性” 说明和“方法” 说明两个主要部分。

    类的成员
    类的成员主要包括 属性 和 方法。
    属性 : 又叫成员属性或成员变量 , 其本质就是变量,但是它也是和某个具体的类是绑定起来的。它就是
    这个类的特征,比如说狗的体重、身高等等。
    方法 : 又叫成员方法 , 其本质就是函数, 但是它也是和某个具体的类是绑定起来的。 它是这个类的一些
    固有的行为,比如说狗的奔跑、吃饭、睡觉等等。

    对象的成员
    既然对象是类的单独的一个个体 , 那么这个对象也会有该类的属性和方法:
    对象的状态(属性) : 一个对象用数据值来描述它的状态。
    对象的操作(方法) : 用于改变对象的状态,对象及其操作就是对象的行为。
    对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
    思考 : 狗的毛色是属性还是方法? 狗的嗅觉是属性还是方法?狗吃东西是属性还是方法?

    面向对象编程的三大特性 封装 , 继承 , 多态

    定义属性标语法格式:
    访问权限修饰符 属性名[= 默认值];

    public $name = '小白';
    

    需要注意的是 , 定义属性的时候 , 访问权限修饰符必须存在(不能省略)。
    定义方法语法格式: [访问权限修饰符] 方法/函数标识符 方法名 (参数...) {}

    public function eat() { echo "狗狗啃骨头"; }
    

    一个完整的类包含属性和方法。

    访问修饰符:
    1.public !
    public : 被定义为公有的类成员可以在任何地方被访问。
    在子类中可以通过 self::属性名(或方法名)  调用public方法或属性,parent::方法名 调用父类方法
    在实例中可以能过 $obj->属性名(或方法名) 来调用 public类型的方法或属性
    2.protected (了解)
    protected : 被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
    在子类中可以通过 self::属性名(或方法名) 调用protected方法或属性,parent::属性名(或方法名) 调用父
    类方法。
    在实例中不能通过 $obj->属性名(或方法名) 来调用  protected类型的方法或属性
    3.private (了解)
    private : 被定义为私有的类成员则只能被其定
    义所在的类访问。
    在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法

    以上主要学习了如何定义一个类,成员调用(访问权限修饰)

    构造方法与析构方法

    构造方法(construct) :是一种特殊的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对
    象的初始化, 它可以有参数,也可以没有参数。当类实例化一个对象时会自动调用构造方法。
    构造方法的两大作用: 1. 构造出来一个类的实例 2. 对构造出来的一个类的实例(对象)初始化

    构造方法的特点:
    ①构造方法名和类名相同(php4版),php5版之后的构造方法名可以和类名相同,也可以是
    __construct();
    ②构造方法没有返回值;
    ③构造方法的主要作用是完成对新对象的初始化,并不是创建对象本身;
    ④在创建新对象后,系统会自动的调用该类的构造方法,不需要自己写代码调用;
    ⑤一个类有且只有一个构造方法,在php5后虽然__construct() 和 类名() 可以共存,但是实际上也
    只能使用一个;
    ⑥如果没有给类自定义构造方法,则该类使用系统默认的构造方法;
    ⑦如果给类自定义了构造方法,则该类的默认构造方法被覆盖;
    ⑧构造方法的默认访问修饰符是public。

    析构函数(destructor) 与构造方法相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系
    统自动执行析构函数。析构函数往往用来做“清理善后” 的工作。

    析构方法的写法(不用自己写,系统在结束的时候会自己给):

    function __construct()
        {
            echo 'construct'.'<br>';
        }
        function __destruct()
        {
            // TODO: Implement __destruct() method.
            echo '__destruct'.'<br>';
        }
        function show(){
            echo "show".'<br>';
        }
    

    魔术方法 : 我们前面介绍的__construct,这个方法就是一个特殊方法,它会在类被实例化的时候自动调
    用。这些特殊方法也往往称之为“魔术方法”,而且也多以 “双下划线” 开头,其目的就是和普通的方法名
    进行区分。
    注意 : 魔术方法不需要自己手动调用 只要有符合对应魔术方法的情况 , 它自己就会执行 , 魔术方法并不
    是为了固定的执行某个功能 , 而是触发后执行自定义的功能。
    魔术方法的作用 :是更好的面向对象,增强程序的健壮性,以及更多的技巧性的东西。

    注意:在静态方法中可以调用静态成员, 但是无法调用普通成员。

    静态成员的特点总结:
    静态数据成员和普通数据成员区别较大,体现在下面几点:

    1. 普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。而静
      态数据成员属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。
    2. 因为类的静态数据成员的存在不依赖与于任何类对象的存在,类的静态数据成员应该在代码中被显
      式地初始化,一般要在类内进行。
    3. 外部访问类的静态成员能直接通过类名来访问。
    4. 类实例化对象可以访问静态方法,但不能访问静态属性
    5. 类的静态成员函数无法直接访问普通数据成员(可以通过对象名间接的访问),而类的任何成员函
      数都可以访问类的静态数据成员。
    6. 静态成员和类的普通成员一样,也具有public、protected、private3种访问级别。

    类常量(const)
    以前定义常量使用 'define' 函数定义 , 这种常量是全局常量 , 在任何地方都可以被访问到 , 而类常量则是
    专属于该类的常量。

    1.定义类常量
    定义类常量的格式:
    const 常量名 = 值;
    类常量和静态属性类似 , 调用也需要使用 范围解析符 '::' 。
    类常量的调用格式:
    类名::类常量名;

    类全局常量和全局常量的区别:
    总结 : 全局常量可以不用使用任何标识符直接在任何地方调用到 , 而类常量必须使用对应的类名称或代
    表类名称的关键字来使用。

    继承 : 是指建立一个新的派生类,从一个先前定义的类中继承数据和函数,而且可以重新定义或加进新
    数据和函数,从而建立了类的层次或等级。而派生类就是从一个类衍生出的类。

  • 相关阅读:
    在宝塔中升级mysql版本
    测试winform程序到树莓派运行
    winserver2012远程桌面进入只有CMD窗口,无桌面解决方法
    一七年春末
    Linux 上通过rpm安装mysql
    Linux 上关于iptables
    Linux环境下安装JDK
    Linux上安装tomcat
    Linux 下安装redis
    Map集合按照value和key进行排序
  • 原文地址:https://www.cnblogs.com/justsus/p/13959985.html
Copyright © 2011-2022 走看看