Java是一种相对比较成熟的面向对象编程语言。面向对象是一种较为符合人类思维习惯的编程思想。在Java中一切皆可有对象,我们把具有相同性质、特点的事物抽象成一个类,而每一个具有这些性质、特点的事物就是这个类的一个对象。
面向对象与面向过程
面向过程:
面向过程就是分析出解决问题的一个个步骤,在程序中的提现就是写好的一个个执行不同目的的函数,在解决问题的时候,就再一个一个的调用这些步骤(函数)。
就比如说洗衣服这件事,在面向过程的时候,就会被拆分成:放入衣服、加入洗衣液、加入适量水、启动洗衣、排水、甩干、晾衣服。这一些列的过程,最终达到洗衣服的目的。
面向对象:
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
再以洗衣服这件事为例,在面向对象的时候洗衣粉主要就被分为了两类对象,第一类对象——人,主要有放入衣服、加入水、晾衣服等属性;第二类对象——洗衣机,主要有洗衣服、甩干衣服等属性。面向对象主要是划分了问题而不是步骤。
面向对象与面向过程的优缺点
面向过程:
优点:
流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。
效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:代码重用性低,扩展能力差,后期维护难度比较大。
面向对象
优点:
结构清晰,程序是模块化和结构化,更加符合人类的思维方式;易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:
开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。
面向对象的基本特性
封装:
是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
良好的封装能够使程序更高效安全。
继承:
继承是Java程序设计中的一项核心技术。继承的基本思想是使用已经存在类中的属性和方法去创建新的类,在新类中可以添加心得属性和方法,让新的类能够适应心得情况而不用重写已经存在的属性方法。
多态:
多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。
对面向对象来说,多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。通过编译之后会变成两个不同的方法,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是大家通常所说的多态性。(解释来自C语言中文网](http://c.biancheng.net/view/1001.html)))
面向对象的五大基本原则
单一职责原则(Single Responsibility Principle)
没一个类应该专注于做一件事。指类的功能要单一,不要包罗万象;像人一样不要一心二用。
开放封闭原则OCP(Open-Close Principle)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的
里氏替换原则(Liskov Substitution Principle)
子类应当可以替换父类并出现在父类能够出现的任何地方
依赖倒置原则(Dependence Inversion Principle)
具体依赖抽象,上层依赖下层。
接口隔离原则(Interface Segregation Principle)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
暂无评论