OOP 三大特性

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值