旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

什么是里氏代换准绳?(举例说明)【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:107


导读:里氏代换准绳里氏替代准绳LSP讲的是基类和子类的关联。只有当这类关联存在时,里氏代换关联才存在。如果两个细致的类A,B之间的关联违背了LSP的设想,(假定是从B到A的继续关...
里氏代换准绳

里氏替代准绳LSP讲的是基类和子类的关联。只有当这类关联存在时,里氏代换关联才存在。如果两个细致的类A,B之间的关联违背了LSP的设想,(假定是从B到A的继续关联)那末依据细致的状况能够鄙人面的两种重构计划中挑选一种。

<?php
//举例说明继续的风险,我们须要完成一个两数相减的功用,由类A来担任。
class a{
public $width;
public $height;
public function func1($a, $b){  
        return $a - $b;  
    }
}
$a = new a();
echo $a->func1(100,50);
//运转效果100-50=50

厥后,我们须要增添一个新的功用:完成两数相加,然后再与100乞降,由类B来担任。即类B须要完成两个功用:

采纳类B继续类A代码以下:

class b extends a{  
    public function func1($a, $b){  
        return $a + $b;
    }  
      
    public function func2($a, $b){  
        return $this->func1($a, $b) + 100;
    } 
}
$b = new b();
echo $b->func2(100, 50);

假定类B在给要领起名时无意中重写了父类的要领,形成一切运转相减功用的代码悉数调用了类B重写后的要领,形成底本运转一般的功用fun1涌现了毛病(毛病的原因是减法变成了加法而其他使用者并不知道。别总想着代码是一个人写的呦!另有人人没有时候去逐行读你的代码,他们只是根据划定规矩举行运用)。

里氏替代准绳浅显的来说就是:子类能够扩大父类的功用,但不能转变父类原有的功用。它包括以下4层寄义:

1、子类能够完成父类的笼统要领,但不能掩盖父类的非笼统要领。

2、子类中能够增添本身特有的要领。

3、当子类的要领重载父类的要领时,要领的前置前提(即要领的形参)要比父类要领的输入参数更宽松。

4、当子类的要领完成父类的笼统要领时,要领的后置前提(即要领的返回值)要比父类更严厉。

看上去很难以想象,由于我们会发如今本身编程中常常会违背里氏替代准绳,顺序还是跑的好好的。所以人人都邑发生如许的疑问,如果我非要不遵照里氏替代准绳会有什么效果?

效果就是:你写的代码出问题的概率将会大大增添。

以上就是什么是里氏代换准绳?(举例说明)的细致内容,更多请关注ki4网别的相干文章!

标签:里氏代换原则