• PHP面向对象编程 对象的基本概念 PHP面向对象的基本实践 PHP面向对象的高级实践 PHP面向对象的特殊实践


    再次梳理一下面向对象编程的要点。

    此文是以php为例,但思想是通用的。

    总结的PHP面向对象编程笔记

    对象的基本概念

    对象的基本构成

    对象包含两部分

    一、对象的组成元素

    是对象的数据模型,用于描述对象的数据。

    又被称为对象的属性,或对象的成员变量。

    二、对象的行为

    是对象的行为模型,用于描述对象能够做什么。

    又被称为对象的方法。

    对象的特点

    1 每个对象都是独一无二的

    2 对象是一个特定事物,他的职能是完成特定功能

    3 对象是可以重复利用的

    面向对象的基本概念

    面向对象就是在编程的时候数据结构形式都通过对象的结构(属性,方法)进行存储。

    面向对象的实质

    面向对象就是把生活中要解决的问题都通过对象的方式(属性,方法)进行存储。

    对象和对象之间的互动是通过方法的调用(方法)完成互动。

    面对对象的原则

    对象内部是高内聚的

    对象对外是低耦合的

    PHP面向对象的基本实践

    通过关键词 class

    物以类聚,把具有相同特性的对象归到一个类中。

    类定义了这些对象有相同的属性,方法。

    类的对象称为类的一个实例(instance)

    类的属性方法统称为类的成员。

    类的实例化

    类的实例化就是通过类定义创建类的一个对象。

    通过关键词 new

    构造函数

    __construct()

    构造函数,在对象被实例化时自动调用,都会自动执行一次

    析构函数

    __destruct()

    在程序结束的时候,自动调用

    析构函数通常用来清理程序使用的资源

    对象的引用

    面向对象的高级实践

    继承

    继承的好处

     1 父类定义的类成员不用在子类中重复定义,节约了编程的时间

     2 .同一个父类的子类拥有相同的父类定义的类成员,因此外部代码调用他们的时候可以一视同仁

     3 子类可以调整或重写父类的类成员。

    在子类的对象上可以直接访问父类中的方法和属性

    父类中的属性,可以通过$this来访问

    在PHP中可以用extends关键字来表示类的继承,后面跟父类的类名。
    PHP中extends后面只能跟一个累的类名,这就是php的单继承原则

    访问控制

    public (公有的):类中的成员将没有访问限制,所有的外部成员都可以访问(读和写)这个类成员(包括成员属性和成员方法)。如果类的成员没有指定成员访问修饰符,将被视为 public 。

    protected (受保护的):被定义为 protected 的成员不能被该类的外部代码访问,但该类的子类具有访问权限。

    private (私有的):被定义为 private 的成员,允许同一个类里的所有成员访问,但对于该类的外部代码和子类都不允许访问。

    static(静态)关键字

    静态属性定义时在访问控制关键字后面添加static关键字即可
    静态方法定义同上

    在类定义中使用静态成员的时候,在self关键字后面跟着::操作符,即可。注意,在访问静态成员的时候,::后面需要跟$符号
    在类定义外部访问静态属性,我们可以用类名加::操作符的方法来访问类的静态成员。

    使用parent关键字就能访问父类的静态成员
    1.静态属性用于保存类的公有数据
    2.静态方法里面只能访问静态属性
    3.静态成员不需要实例化对象就能访问
    4.内部可以通过self或者static关键字访问自身静态成员
    5.可以通过parent关键字访问父类的静态成员
    6.可以通过类的名称在类定义外部访问静态成员

    Final关键字(PHP5)

    final -- 用于类、方法前。(是最终的效果)

        final类 -- 不可被继承。

        final方法 -- 不可被覆盖。

    数据访问

    1.parent关键字可以调用父类中被子类重写了的方法
    2 self关键字可以用于访问类自身的成员方法,也可以用于访问自身的静态成员和类常量;不能用于访问类自身的属性;使用常量的时候不需要在常量名称前面添加$符号
    3.static关键字用于访问类自身定义的静态成员,防伪静态属性时需要在属性面前添加$符号

    对象接口

    接口是一种标准,简单说,比如有个说话的函数/方法,有些人用say(),有些人用shuo(),有些人用其他的,这可不行,这时候定义一个接口,所有人都得用同一个写法

    接口:
    1.方法不具体实现
    2.定义接口为interface关键字
    3.类使用接口为implements 关键字
    4.接口可以继承接口,用extends关键字

    5.接口不能被实例

    可以用instanceof 判断某个对象是否实现了某个接口

    类的方法必须有具体实现,接口的方法必须为空。

    多态

    因为接口的实现方法可以有很多,所以对接口里面定义的方法的具体实现也是多种多样,这就是多态。

    抽象类

    抽象类是介于类和接口之间的一种形态,有一部分类是没有实现的,有一部分类是已经实现的

    abstract关键字定义抽象类

    在抽象方法添加abstract关键字可以表明这个方法是抽象方法,不需要具体实现

    抽象类中可以包含普通的方法

    继承抽象类用extends关键字

    继承抽象类的子类需要实现抽象类中的抽象方法

    PHP面向对象的特殊实践

    只有php有

    魔术方法

    __tostring 当对象被当做字符串使用时自动调用
    __invoke 当对象被当做方法是使用时自动调用

  • 相关阅读:
    java基础--字符转换Unicode
    java基础---集合框架
    洛谷 P2049 魔术棋子(vector)
    洛谷 P3133 [USACO16JAN]Radio Contact G
    洛谷 P2679 子串
    洛谷 P2549 计算器写作文
    洛谷 P2758 编辑距离
    洛谷 P1481 魔族密码
    洛谷 P1754 球迷购票问题
    洛谷 P2782 友好城市
  • 原文地址:https://www.cnblogs.com/oneplace/p/5597019.html
Copyright © 2020-2023  润新知