【PHP】面向对象 - 三大基本特征和五大基本原则

小破孩
2022-06-17 / 0 评论 / 134 阅读 / 正在检测是否收录...

面向对象基本特征:

封装
隔离性:
被封装后的对象,其外部对象是无法直接访问对象的内部实现细节,内部实现细节的的改动不会影响到外部对象的访问原则(即:对象内部修改后,在公开暴露指定的访问路径不变的情况下,外部访问它的对象是无需修改的),这是隔离性的体现,同时也是实现高内聚,低耦合的最根本的思想之一;
可复用性:
被封装后的对象可以被外部多个对象访问,而无需为每个外部对象去指定不同的服务对象;减少代码的冗余。
可读性:
合理设置被封装的对象名称,可增强代码的可读性,通过方法名或者类名即可了解其作用。

继承
PHP中主要通过extends关键字来实现继承: class Student extends Person{}
PHP只能单继承,不支持一个类继承多个类。但是一个类可以进行多层继承(即A继承于B,而C又继承于A,C通过A间接继承了B)
子类继承父类非私有的属性和方法,可以通过$this关键字进行访问
覆盖:子类中声明与父类相同名称的属性和方法,则该属性和方法会覆盖父类中的属性和方法,属性被覆盖后,无法访问父类中的属性,方法被覆盖后,可以通过parent::方法名()进行访问

多态
同一方法作用于不同对象时,产生不同的执行结果
多态存在的三个必要条件:继承、重写(子类继承父类后对父类方法进行重新定义)、父类引用指向子类对象
示例如下:

    abstract class Person{        // 父类使用abstract关键字修饰
        abstract function say();
    } 
    
    class Chinese extends Person{   // 子类重写父类方法
        function say(){
           echo "我是中国人<br>";
        }
    } 
    class English extends Person{    // 子类重写父类方法
        function say(){
            echo "我是英国人";
        }
    }
    
    $zhangsan = new Chinese();
    $zhangsan->say();
    $z = new English();
    $z->say();
    Person $p = new Chinese();   // 父类引用指向子类对象
上述代码中,两个子类都是继承自同一父类,但因为都重写了父类的方法,表现出了不同的形态 基本原则:

1、单一职责原则(SRP)
单一职责有两个含义:一个是避免相同的职责分散到不同的类中,另一个是避免一个类承担太多职责

2、开放封闭原则(OCP)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的

3、里氏替换原则(LSP)
子类型必须能够替换掉它们的父类型,并出现在父类能够出现的任何地方。

4、依赖倒置原则(DIP)
依赖倒置简单地讲就是将依赖关系倒置为依赖接口,具体概念如下:

  • 上层模块不应该依赖于下层模块,它们共同依赖于一个抽象(父类不能依赖子类,它们都要依赖抽象类)。
  • 抽象不能依赖于具体,具体应该依赖于抽象。

5、接口隔离原则(ISP)
不同的模块要通过抽象接口隔离开,而不是通过具体的类强耦合。

0

评论 (0)

取消