@TOC
面向对象三大特征和五大原则
一、三大基本特征
面向对象的三大基本特征为:封装、继承、多态。
1、封装
把客观事物抽象出来,封装成类,并且类可以把自己的属性和方法只让可信的类或者对象操作,封装可以让多个事物之前比较清晰和明了。
2、继承
继承是面向对象编程主要的功能,它可以让其他类可以使用该类的指定的方法和属性,而不用重新编写相应的代码,且可以在该类的基础下进行功能的扩展。继承也是最好理解的特征。
一般实现继承可通过继承父类达到实现继承,这样可不用重新编写相应代码便可以使用相应功;也可通过接口来达到接口继承,这样需要子类实现具体代码,只使用父类的属性和方法的名称。
使用继承的前提是父类和子类具有相同的特征,因为子类源于父类,所以子类是父类的一种。
3、多态
一个接口,多种实现。将父对象设置成一个或多个其子对象的方式称为多态,也就是说。允许将子类类型的指针赋值给父类类型的指针。
多态有多种形式:
重写:子类重写父类相同的方法,以实现子类的个性化需要
重载:同名函数多种入参组合
父类引用指向子类对象:子类源于父类,是父类的一种,可将子类对象赋值给父类对象,例如List a = new ArrayList();此种方式的好处是依赖抽象而不是依赖具体实现,有更好的扩展性。
二、五大设计原则
1、单一职责原则
对一个类而言,应该仅有一个引起它改变的原因。每一个类,只负责干一件事。如果一个类承担的职责过多,这些职责就会相互依赖,一个职责的变化可能会影响另一个职责的执行。应该合理的进行类的职责分配。避免在改动一种职责时,影响其他职责的执行。
2、开放封闭原则
代码的实现应该是可以扩展的,但是不可修改。良好的软件设计必须考虑改变,为了减少在改变代码时对现有代码的影响,应该提高代码的扩展性,而对修改关闭。将可能变化的模块抽象出来,然后提高扩展性。
3、里氏替换原则
子类应当可以替换父类并出现在父类能够出现的任何地方。本原则和开放封闭原则关系密切,正是子类型的可替换性,才使得使用基类型模块无需修改就可扩充。
4、依赖倒置原则
抽象不应依赖于细节,细节应该依赖于抽象。也就是说,在将事物抽象时,不能让这个已被抽象的事物依赖具体的事物,就好比接口的定义中不能有实现,因为接口就是抽象的,在使用抽象对象的具体实现时,不能直接依赖具体实现,而应该还是依赖抽象,例如List list = new ArrayList()。
5、接口隔离原则
多个专用接口优于一个单一的通用接口。一个接口应该保证,实现该接口的实例对象可以只呈现为单一的角色,当某个客户程序的要求发生变化,而迫使接口发生改变时,影响到其他客户程序的可能性更小。也便是,抽象事物,被抽象的事物间通过依赖抽象的方式组合起来,而不是通过具体的类强耦合起来。
以上原则都是为了一个目的——高内聚,低耦合。