美文网首页
PHP学习2

PHP学习2

作者: 罟宁 | 来源:发表于2016-09-24 11:20 被阅读0次

    六.继承与多态

    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 ,只是实现的层级不同

    相关文章

      网友评论

          本文标题:PHP学习2

          本文链接:https://www.haomeiwen.com/subject/dvjxyttx.html