PHP学习2

六.继承与多态

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

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

    <?php
    trait myTrait{
        function traitMethod1(){}
        function traitMethod2(){}
    }    
    //然后是调用这个traits,语法为:
    class myClass{
        use myTrait;
    }
    //这样就可以通过use myTraits,调用Traits中的方法了,比如:
    $obj = new myClass();
    $obj-> traitMethod1 ();
    $obj-> traitMethod2 (); 
    >
2. 各种语言中的多态
多态
  • 多态就是同一对象在运行时的具体化
  • 多态性是一种通过多种状态或阶段描述相同对象的编程方式
  • 意义在于:实际开发中,只要关心一个接口或基类的编程,而不必关心一个对象所属的具体类
  • 区别是否是多态的关键在于看对象是否属于同一类型。如果把它们看成同一类型,调用相同的函数,返回了不同的结果,那么他就是多态。
  • 多态的本质就是if...else ,只是实现的层级不同
  • 多态的本质就是if...else ,只是实现的层级不同
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,000评论 0 2
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 4,879评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,741评论 0 4
  • 今天晚上要转播课程,我心里很焦虑。 其实转播课程只需要一个小时时间,我可以在20:00-21:00之间做这件事情,...
    夏夜冬日阅读 1,072评论 0 0