面向对象的理解
面向对象是一种编程风格,可以实现很多复杂的设计思路,是设计原则和设计模式编码实现的基础。
抽象
抽象是一个很宽泛的名词,从大方面上讲,我们需要以面向对象的方式先抽象出业务对象,然后抽象出其属性和行为,最后进行封装。小的方面就是具体函数方法实现的抽象,他体现在接口类和抽象类上,调用者不需要理解具体实现,只需要知道自己调用的方法目的是什么即可。
封装
封装主要功能是信息隐藏和数据访问控制。
java是面向的对象的语言。项目是对功能代码的封装,包是对类的封装,类是对对象数据属性或行为的封装,变量是对属性的封装,函数是对行为的封装,通过不同的控制访问修饰符,去规范变量和行为的使用范围。
在使用方法或一些开源项目适合,不需要知道具体的实现方法,只要知道他实现了什么功能就可以了,简化了我们的工作
具体的封装需要对设计模式和设计原则有一定的认识,合理的使用抽象类,接口,类,并组织他们之间的关系有助于提高代码的可扩展性。
继承
在对对象进行封装的同时,也要对其进行组织,合理的组织能提高代码的可复用性和可扩展性,而继承就是这样一个工具。将共性抽取出去形成父类,差异形成子类。更好的组织代码。
此处需要注意一个原则,里氏替换原则。当一个子类调用一个方法时,换成父类,程序逻辑不变。这是为了降低复杂度。
当继承是为了代码复用的时候,那么就不要覆盖父类的方法,子类只能通过自增方法实现功能。
当继承是为了实现多态的时候,父类最好是是抽象类和接口,通过实现父类的方法进行实现。
继承太多会使类结构复杂,可读性和维护性降低,代码复用也可以使用组合来实现。多用组合,少用继承。
多态
子类可以替换父类,在实际代码运行过程中,调用字类的方法实现。
多态简单的说分为静态多态和动态多态,静态多态是方法的重载,动态多态是方法的重写。一句话概括就是,相同的引用调用相同的方法实现不同的功能,这是因为子类的各自的实现原因。它主要是为应对变化而生。可提高代码的可维护性,可扩展性。