定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
优点:依赖倒置原则可以提高程序的可扩展性,也可有效的降低程序耦合;依赖倒置原则避免了修改负责复杂逻辑的高层模块,大大提高了程序的稳定性。
依赖倒置原则简单点的说就是在编程过程中应尽可能引用抽象类,减少引用具体类。举个例子来说抽象类animal中有很多的共性,而具体类dog(由基类animal派生而来)中除了有基类animal的方法和属性,还具有自己特有的方法和属性。在编程过程中想要遵循依赖倒置原则,就要使用指向派生类对象的基类引用,但是由于指向派生类对象的基类引用只能访问基类中的方法和属性,而无法访问派生类中特有的方法和属性,那么问题出现了,我们既想遵循依赖倒置原则,又想调用派生类中的特有的方法和属性,此时就要用到虚方法了。
虚方法就是在基类中将共性方法用关键字virtual进行声明,然后在派生类中用override对虚方法重写,即在派生类的特有方法(该方法与基类中方法同名)前用override进行声明。当程序中需要调用这个方法时,程序跳转到基类中的该方法后virtual关键字就会告诉系统这里是一个虚方法,然后系统就会自动的去基类引用所指向对象所属的派生类中去判断这个虚方法是否被override重写了,如果被重写就调用派生类中的方法,否则调用基类中的方法。如此就解决了矛盾所在。(注意区别基类方法的隐藏)总起来一句话就是虚方法即坚持了统一,由彰显了个性。