谈谈面向对象的三大特性

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:本文阅读时间大约需要5分钟。封装:常见的编程范式有:过程式编程、面向对象编程、函数式编程,现在函数式编程很火,但是面向对象编程依然是主流。继承:继承的目的是为了代码复用。有了封装,有了类和对象这种机制,可以将一些数据和行为封装再一个类里,但是还有问题没解决:如果有几个类有类似或共同的行为,就需要做很多重复性的工作。为了解决这个问题,Java提出了继承的概念。

本文阅读时间大约需要5分钟。

参考答案

封装:常见的编程范式有:过程式编程、面向对象编程、函数式编程,现在函数式编程很火,但是面向对象编程依然是主流。

  • Java 中,封装是一种抽象机制,Java中提供了类和对象的概念,对象包含了一组数据和行为,并且可以响应对应的请求,这样的机制有助于开发者面向具体的领域问题编程,而不是像之前过程式语言中一样,就按照一步步的步骤来处理一些数据。在这里并不是说之前的语言不够好,而是说应用成本的问题,C语言不支持面向对象,但是也产生了unix、 linux 这样伟大的软件,但其实编程思想是相通的,在linux内核中有很多地方都用到了面向对象的编程思想,只是实现起来有一定的难度和门槛,而Java提供的抽象机制降低了这个门槛。

  • 封装的本质是信息隐藏,信息隐藏的初衷是为了将容易改变的代码和不经常改变的代码隔离开,以便控制代码变更的影响面。

继承:继承的目的是为了代码复用。有了封装,有了类和对象这种机制,可以将一些数据和行为封装再一个类里,但是还有问题没解决:如果有几个类有类似或共同的行为,就需要做很多重复性的工作。为了解决这个问题,Java提出了继承的概念。

  • 当继承一个现有类型时,就产生了新的类型,这个新的类型不仅包括父类的所有成员,更重要的是它复制了基类的接口;子类型的对象可以被父类类型的变量引用,反之则不行。

  • 有两种方法可以让子类和父类产生差异:直接在子类种添加新的方法和成员变量;改变现有父类的行为,在Java种的术语叫做覆盖(overriding)。

多态:多态的提出是为了将解决方案和逻辑复用,实现良好的 可扩展性

  • Java中的多态是依靠接口实现的,定义一个接口, 面向接口编程 ,具体的实现类可以有多个,后面再增加新的实现类的时候,不会对使用这个接口的业务逻辑产生影响。最经典的例子就是绘图例子:定义一个generic接口,编写的方法操作的都是泛化的类型而不是具体的类型,这样后面再加入新的类型的时候原有业务逻辑不需要改变。

  • Java中的多态的实现是 运行时绑定 ——编译器无法直到会运行哪一个实现类的代码,编译器会产生对一个具体函数的名字的调用,在运行时再将这个调用解析为具体代码的地址。

参考答案

面向对象理论的三个基本概念:封装、继承、多态的知识点在上面已经梳理过了,这里给出在OOP方面急需深入的建议。面向对象是一种很好的编程范式,不过我们不能手里拿着锤子就看到啥都是钉子,还需要扩展下自己的视野。这几年非常火的函数式编程范式,就是一种值得学习的编程范式,他跟面向对象不同,卖点在于:函数作为一等公民,函数的调用没有副作用。

再回到面向对象的学习,OOP学完,就可以学习OOD,然后要多做项目,项目做得多了以后,就有机会沉淀出很多经验和固定的套路,这就是设计模式,也值得学习。

基本理论、 设计模式 都准备好后,应付初级的Java面试就没问题了,不过我们这里还可以再扩展下。设计模式是针对代码级别的套路总结,如果把场景扩大到架构层面,就需要看架构模式了,之前有写过一篇文章总结了常见的架构模式。最后要注意,空学理论没什么用,一定要在项目中应用,否则就是过个眼瘾,没啥价值。

架构模式、设计模式都属于技术范畴,如果要应对更复杂的业务场景,只是基本的OOP和OOD是不够用的,这时候就需要用到DDD(领域驱动设计),领域驱动设计就是为了解决复杂常见而生的。当然,场景可能更加复杂,例如我们要做平台化,那么就需要做进一步的抽象,也就是所谓的领域的领域,这块就比较深了,是我努力的方向。

你再主动一点点    我们就有故事了


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

别怕,Excel VBA其实很简单

别怕,Excel VBA其实很简单

Excel之家 (Excel Home) / 人民邮电出版社 / 2012-10-1 / 49.00元

《别怕,excel vba其实很简单》考虑到大多数读者没有编程基础的实际情况,用浅显易懂的语言和生动形象的比喻,并配合大量插画,介绍excel中看似复杂的概念和代码、从简单的宏录制、vba编程环境和基础语法的介绍,到常用对象的操作与控制、excel事件的调用与控制、用户界面设计、代码调试与优化、都进行了形象的介绍。 《别怕,excel vba其实很简单》适合想提高工作效率的办公人员,特别是经......一起来看看 《别怕,Excel VBA其实很简单》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具