
php是一种面向对象的语言,那么什么是面向对象的呢?
面向过程的传统编程思想:
我相信许第一次接触编程是C语言. C语言是一种非常典型的面向过程的编程语言,将要实现的功能描述为从头到尾的连续“步骤(过程)”. 按顺序完成这些步骤. 如果步长很大,则可以将该步再次细分为子步,依此类推.
从头到尾执行程序,并获得所需的结果.
示例: 完成“注册学习”以传递智慧的问题可以这样实现:
第一步,学生建议注册并提供姓名和照片
第二步是咨询老师以接收照片并注册学生的姓名
第三步,学生支付费用(支付到学校帐户)并获得付款凭证
第四步是咨询老师以验证证书并分配课程
第五步,最终结果是: 完成注册,学生可以在指定的时间参加指定的班级(教室),并且在中提供了学生的信息.
现代的面向对象编程思想:
将要实现的功能描述为“对象/对象”任务-实际上是一样的: 功能的实现取决于实体的“动作/操作/动作”. 在完成最终功能的过程中,需要实现其他中间功能(过程),然后调用其他对象(或本身)来实现中间功能.
整个系统的完成(功能的实现)被视为一个对象,它在其中发挥各自的“能力”,并在内部进行协调有序的调用过程.
示例: 完成“申请学习”以传递智慧,可以按以下方式处理: 学生对象: 有姓名和照片,有自己的班级,可以“申请注册”,可以“付费”,请教老师对象: 可以接收照片并注册名称以分配课程. 班级对象: 有班级编号,开始日期和教室.
基本的面向对象概念:
类和对象: 类是描述事物类别的通用术语,是具有相同特征的事物类别的通用名称(称为). 例如,人是一类(人),狗也是一类(狗类)),它们属于较大的类别(哺乳动物),桌子面向对象的语言,手机,书籍都是类别;
对象是类中的确定的具体“对象”和“物理对象”(相对而言,类是抽象的通用名称). 对象与类是分不开的,或者对象必须属于一个类-有一个类具有一个对象,首先有一个类,然后是一个对象.
例如,“黄小明”是“人”类的具体对象,而“阿煌”是“狗”类的具体对象.
类确定对象的所有特征信息. 例如,如果我是人类,那么我有: 姓名,性别,年龄,我仍然可以吃饭,走路和说话.
一个对象的所有特征信息均由其所属的类别确定,但每个对象可能具有其自己不同的特征信息. 例如,有一个名为吴六七的性别对象,该对象将编写程序,另一个对象可能叫张子怡,性别为女性,可以行动.
从语法上讲,一个类可以具有自己的“变量”和“功能”,但是在当前,它在技术上被相应地称为“属性”和“方法”. 一个类也可以有自己的常量. 这些属性面向对象的语言,方法和常量称为“类”的“成员”.
对象的创建:
这是一个“创建”特定“对象”的类-术语是对象. 创建对象的语法可以是:

新类名();
新变量名(); //变量的内容是代表类名的字符串.
新对象名称(); //创建该对象所属类的新对象
新自我; //用于在类的方法中创建此类型的对象.
类名:: getNew(); //定义该类的静态方法以获取该类的对象
对象的使用:
使用其属性或方法. 使用属性可以视为变量. 使用该方法,可以将其视为函数.
一个类可以并且只能包含以下三个成员(代码): 变量(称为属性),函数(称为方法)和常量(称为类常量).
常规属性:
The
属性是在类中定义的变量. 需要使用public或var对其进行修改(定义),也可以使用protected或private对其进行修改(请参阅后续知识).
在定义时不能分配任何值或(初始)值,但只能是“直接值”(常量值)或常量,不能是变量值或计算值或函数调用返回值值.
使用属性形式:
对象名称->属性名称;
属性是可读写的(值赋值).
常规方法:
The
方法是在类中定义的函数,但是可以在该函数的前面使用公共,受保护的和私有的修改,或者可以将其省略.
但是,此方法的调用(使用)不能独立执行,而是需要通过对象进行调用.
方法中的$ this关键字具有特定含义: 它表示调用该方法的对象.
获取$ this的类: get_class($ this)
静态属性:
仅属于(取决于)类的属性,可以通过类名称直接访问该属性.

定义表:
static $静态属性名称[=初始值]; //省略访问修饰符,默认为public,并且初始值也应为直接值或常量
使用形式: 类名:: $静态属性名; //可以分配值;
静态方法:
仅属于(取决于)类的方法,该方法由类名直接调用(但是,已经可以使用类的对象名来调用新版本的PHP)
定义表:
[访问修饰符]静态函数$静态方法名称(…){……}
使用表格:
类名::静态方法名(...);其中,类名也可以替换为类的对象名,带有类名,自身等内容的字符串变量名.
自定义关键字:
用于方法中以指示方法的类别.
静态关键字:
除了self角色以外,它还具有self角色,也具有更灵活的角色,即所谓的“后期静态绑定”. 注意: $ this不能在静态方法中使用,非静态方法不应在静态方法中调用.
类常量:
仅属于(取决于)类的常量,可以通过类名直接访问该常量(但是,可以使用类的对象名来调用新版本的PHP)
定义表:
const常量名称=初始值; //必须分配初始值
使用表格:
类名::常量名;其中,类名也可以替换为类的对象名,带有类名,自身等内容的字符串变量名.
构造方法(功能):
构造函数是在实例化一个类(出现新对象)时首先自动调用的方法.
该构造方法适用于创建一些对象(在使用该对象之前)以对该对象进行一些初始化工作.
定义的形式: [访问修饰符]函数__construct(...){......}; //访问修饰符始终需要公开(或省略).

调用形式: 实际上,没有直接调用形式,但是当new是一个对象时调用它: new C1(“小花”,18,“女”);
如果在类中定义了构造方法,则在实例化该类时将调用该方法,并且实例化时的参数需要与构造方法的参数匹配.
如果在类中未定义构造函数,则将自动调用其父类的构造函数(如果有),并且实例化时的参数必须与父类的构造函数的参数匹配.
您还可以在当前类的构造函数中调用父类的构造函数: parent :: __ Construct();
破坏性方法(功能):
析构函数方法是一种在销毁对象时自动调用(执行)的方法. 破坏对象的几种情况:
脚本程序完成运行并自动销毁;
显式取消()对象变量,它将被销毁;
更改对象变量的值并销毁;
析构函数方法适用于在销毁对象时清理(销毁)对象中使用的某些资源-但实际上,现代PHP具有内置的垃圾收集机制,通常不需要清理.
定义形式: function __destruct(){......}; //注意: 仅公开,没有参数
调用形式: 无需在代码中手动调用,而是在代码运行结束时自动调用(执行).
如果在类中定义了析构函数方法,则在销毁对象时将调用该方法.
如果在类中未定义任何析构函数方法,则在销毁对象时将调用其父类的析构函数方法(如果有)
类继承:
基本含义: 类是用于描述现实中同一事物的共同特征的抽象模型. 但是,在现实世界中,不同类型的事物之间通常存在某些关系. 例如,动物是具有某些特征的“类别”. 但是脊椎动物也是一类,也具有某些特征,同时具有动物的所有特征. 哺乳动物也是一类具有脊椎动物特征和所有特征的动物. 依此类推,然后在面向对象的编程中,我们定义的类也可以具有相似的关系特征,即类的继承.
**基本语法: **扩展
**基本概念: **
**继承: **一个类从另一个称为继承的现有类中获取其特征.
**派生: **从现有类中生成一个新类,称为派生.
**父类/子类: **现有类是父类,新创建的类是子类.
**单一继承: **类只能从上级类继承其特征信息. PHP和大多数面向对象的语言都是单继承模型. C ++是多重继承.
**扩展: **在子类中,定义一些新的唯一特征信息(属性,方法和常量). 没有扩展,继承就毫无意义.

访问控制修饰符:
public: 在所有位置均可访问(使用).
受保护的: 只能在该类以及该类的子类或父类中对其进行访问(使用).
私有: 仅可在此类中访问(使用).
parent关键字: 用于表示(表示)该类中该类的父类. 可用于访问父类的属性或方法或常量.
在构造和解构方法中调用上级相同方法的问题:
当子类中没有定义构造函数时,将自动调用父类的构造函数. 因此,在实例化子类时,需要遵循父类的构造方法的形式.
子类定义了自己的构造方法,它不会自动调用父类的构造方法,但可以手动调用: parent :: __ Construct();
如果在子类中未定义析构函数方法,则将自动调用父类的析构函数方法.
子类定义了自己的析构函数方法,它不会自动调用父类的析构函数方法,但可以手动调用: parent :: __ destruct()
覆盖覆盖
**什么是重写? **重写也称为“重写”,它是重新定义从父类继承的属性或方法. 只能覆盖受保护的或公共属性或方法.
**为什么要重写? **由于父类的属性可能对于子类而言不够具体或详细,因此子类需要有关相同功能部件的更准确或详细的信息.
**重写的基本要求: **访问控制权限,方法参数表.
**私有属性和私有方法的重写: **私有属性和方法都不能被覆盖,但是实际上,子类可以定义与父类同名的属性或方法. 它只是被视为自己的新属性或方法. 但是,该方法的参数必须一致.
**构造方法的重写问题: **构造方法不仅可以像其他普通方法一样进行重写,而且比普通方法更轻松: 重写时参数可能不一致.
**最后一堂课: **
**最终方法: **
设计模式:
**工厂模式: **专门用于“生产”各种其他类的对象的类
**单例模式: **一个只能从其实例化对象的类
经典的“放大”技术:
**抽象类,抽象方法: **
可以使用关键字abstract将一个类声明为抽象类. 抽象类是无法实例化的类,只能用作其他类的父类.
可以使用关键字abstract将方法声明为抽象方法;抽象方法只需要声明方法标题,而不用花括号声明方法主体.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-165092-1.html
不过
他晚上加班