PHP学习2

六.继承与多态

1. 类的组合和继承(继承===“是、像”、“父与子”,组合===“需要”、“整体与局部”)
组合:在类中创建对象进行使用
继承:类与类之间的父子关系,子类继承父类的方法和属性
  • 在子类中,parent关键字代表父类,self代表自身,用::运算符,又叫范围解析操作符,调用父类的方法
  • 继承的缺陷:
    ~ 继承破坏封装性
    ~ 继承是紧耦合的
    ~ 继承扩展复杂
    ~ 不恰当的使用继承可能违反现实世界的逻辑(角色与权限问题)
  • 继承的使用
    ~ 被继承的类要设计好,继承树不要超过三层
    ~ 使用final修饰符对不能被继承的类进行修饰。使用final修饰符不仅可防止重要的方法被非法覆写,又能给编辑器寻找优化的机会
    ~ 优先考虑使用组合关系来提高代码的可重用性
    ~ 子类是一种特殊的类型,而不只是父类的一个角色
    ~ 子类扩展,而不是覆盖或者使父类的功能失效
    ~ 底层代码多用组合,顶层/业务层代码多用继承。底层用组合可以提高效率,避免对象臃肿。顶层代码用继承可以提高灵活性,让业务使用更方便。
traits

PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。
Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法:

     traitMethod1 ();
    $obj-> traitMethod2 (); 
    >
2. 各种语言中的多态
多态
  • 多态就是同一对象在运行时的具体化
  • 多态性是一种通过多种状态或阶段描述相同对象的编程方式
  • 意义在于:实际开发中,只要关心一个接口或基类的编程,而不必关心一个对象所属的具体类
  • 区别是否是多态的关键在于看对象是否属于同一类型。如果把它们看成同一类型,调用相同的函数,返回了不同的结果,那么他就是多态。
  • 多态的本质就是if...else ,只是实现的层级不同
  • 多态的本质就是if...else ,只是实现的层级不同

你可能感兴趣的:(PHP学习2)