- 面向对象三大特性
- 封装性:
- 定义:封装是面向对象编程的核心思想,将类的某些信息隐藏在类的内部,不允许外部程序调用,而是通过该类提供的方法来对隐藏的信息进行操作和封装
- 设计思想:
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
- 低耦合:仅对外暴露少量的方法用于使用
- 作用:
- 保证了类内部数据结构的完整性
- 应用该类的用户不能轻易的操作此数据结构
- 只能执行类公开的数据
- 避免外部类对内部数据的影响,提高程序的可维护性
- 提高代码的安全性和复用性
- 继承性
- 定义:一个对象针对于另一个对象的某些独有的特点、能力进行赋值或者延续
- 作用:
- 减少代码的冗余,提高代码的复用性
- 便于功能的拓展(相同功能属性,可在父类定义)
- 为多态性提供前提(多态使用前提必须继承)
- 子类继承父类之后的不同点
- 子类继承父类后,就获取了父类中声明的所有的方法和属性
- 子类继承父类后,还可以声明自己特有的属性和方法
- 多态性
- 定义:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
- 前提:
- 要有类的前提
- 要有子类对父类方法的重写
- 好处:
- 类调用者对类的使用成本进一步降低
- 能够降低代码的“圈复杂度”,避免使用大量的if else
- 可拓展能力强
- 封装性:
- 接口类和抽象类
- 接口类
- 定义:接口可以理解为类的模板,提前定义实现它的类需要实现哪儿些功能
- 特点:
- 上下级接口可以通过extends关键词继承
- 接口的所有方法默认都是public权限(因为具体功能要靠实现类实现)
- 接口可以定义常量,不能定义变量
- 一个类可以同时“implements”(实现) 一到多个接口
- 实现类必须实现所有接口定义好的功能,不然会报错
- 接口不能实例化操作,所以要实现接口中的成员,就必须借助实现类(implements)实现
- 抽象类
- 定义:包含抽象方法的类就是抽象类,abstract是定义抽象类的关键字。抽象类存在的意义就是被继承
- 特点:
- 定义为抽象类不能被实例化。任何一个类,如果它里面至少有一个是被声明为抽象的,那么这个类就必须被声明为抽象类的。被定义为抽象的方法只是声明了其调用方法(参数),不能定义其具体的功能实现
- 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法
- 和接口相比,接口只有基本框架,描述了每个方法的功能
- 抽象类通常具有抽象方法,方法中没有大括号,抽象类的抽象方法不实现具体功能,由子类完成
- 如果抽象方法有参数,那子类的实现也必须要有相同的参数数量
-
<?php interface Property { public function sayProperty(); } abstract class Animal implements Property { public $property = ""; abstract public function setProperty(string $property); } class Dog extends Animal { public function setProperty(string $property) { $this->property = $property; } public function sayProperty() { echo $this->property; } } $a = new dog(); $a->setProperty('dog'); $a->sayProperty();
- 接口类
转载于:OOP的三大特性是什么?作用是什么?接口?抽象类?super()关键字_GuiYee的博客-优快云博客_oop的三大特性