一、类与实例
对象:是一个自包含的实体,用一组可识别的特性和行为来标识。
类:就是具有相同的属性和功能的对象的抽象的集合。
实例:就是一个真实的对象。
实例化:就是创建对象的过程,使用new关键字来创建。
二、构造方法
构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,在new的时候调用。
所有的类都由构造函数,如果不编写则系统默认生成空的构造方法,若有定义的构造方法,则默认的构造方法就会失效。
三、方法重载
方法重载是指在一个类中可以定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
四、属性与修饰符
属性:类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。
属性声明是由关键字 public,protected 或者 private 开头,然后跟一个普通的变量声明来组成。
属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
public:共有的,表示它所修饰的类成员可以允许其他类来访问。
private:私有的,表示只允许同一个类的成员访问,其他类包括它的子类无法访问。
protected:表示只允许该类及其子类的成员访问,其他无关的类无法访问。
五、类的三大属性
(一)封装
每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。
优点:
1、良好的封装能够减少耦合;
2、类内部的实现可以自由的修改;
3、类具有清晰的对外接口。
(二)继承
继承定义了类如何关联,共享特性。继承的工作方式是,定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性,此外,子类还可以定义新的特性。
1、子类拥有父类非private的属性和功能;
2、子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
3、 子类还可以以自己的方式实现父类的功能(方法重写);
缺点:
1、父类变,子类不得不变;
2、继承会破坏包装,父类实现细节暴露给子类,增大了两个类的耦合性。
(三)多态
多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
1、 子类继承父类;
2、子类重写父类的方法;
3、父类引用指向子类对象;
六、重构
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
七、抽象类
1、 抽象类不能实例化;
2、抽象方法是必须被子类重写的方法;
3、如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。
八、接口
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上和声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。实现接口的类就必须实现接口中的所有方法和属性。
一个类可以支持多个接口,多个类也可以支持相同的接口。
接口用interface声明,接口中的方法和属性前面不能有修饰符、方法没有方法体。
九、抽象类和接口的区别
1、 类是对对象的抽象,抽象类是对类的抽象;接口是对行为的抽象。
2、如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类。
3、从设计角度讲,抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。
https://www.php.net/manual/zh/language.oop5.php
网友评论