浅谈JAVA——何为面向对象编程(OOP)

作者:夏天

最近闲来无事,所以抽空看了一下JAVA相关基础知识,所谓温故而知新嘛!恰巧我即将毕业的小学弟问了我一个特别基础但是很多人都不了解的问题,到底什么是面向对象编程(OOP)?在这里我简单的和大家探讨一下。

只要是学习了JAVA语言的人都知道,JAVA就是一个纯粹的面向对象程序设计语言。JAVA是完全以对象为核心,最小的单位是类,而不管是多大的JAVA项目,其整个项目程序核心都是由一个又一个的类组成的。JAVA语言完全支持采用对象、类、封装、继承、多态等进行程序设计,在构造项目和整个系统是,所遵循的也是人类的自然思维方式。实际上,这些特点都是面向对象编程的特征。

说到面向对象编程,我又不得不提起他的老大哥:面向过程编程(SP)。面向过程编程,主张按照结构分析需求,主要原则是由顶至下,逐步求精,结构模块化等。其实这种编程方式的好处也有,它可以很好地保证软件的开发进度与质量,开发者可以一目了然的看到整个项目,从而进行开发和修改。所以再面向对象出现以前,面向过程编程是程序设计的主流,在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。不过随着时代的发展,它的坏处也随之出现,在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据。这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证,而且严重影响了开发人员的效率和质量,。面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变,故而,面向对象编程思想由此诞生。

面向对象编程思想是一种更加优秀的程序设计思想,它是从现实中客观存在的事物出发,尽可能地运用给人类的自然思维,直接以对象为核心进行思考,并且根据每一个事物的本质特点,将他们抽象成一个又一个的类。而这些类往往带有一些内部的状态数据还有为其行为特征提供的实现,也就是方法。所以说,类=成员变量(状态数据)+ 方法。从这里我们也可以看出来面向对象编程和面向过程编程的区别,面向对象编程的基数要比面向过程大得多,面向对象的单元是类,而面向过程的单元是函数(方法)。这好比面向过程是我想要一个高达玩具,我需要整备好所有的零部件,然后学习这个玩具是怎么拼装的,一一拼装,最后得到一个玩具;而面向对象就像是我直接到玩具店和老板说,我想要一个高达玩具,而我也不再需要关心这个玩具具体是怎么拼装的。从面向对象的角度来看,开发者希望从自然的认识,使用的角度老定义和使用类。我再用“我要喝饮料”来形容面向对象和面向过程的区别。

面向过程以方法为中心,这件事是这样说的:喝(我,饮料);

面向对象是以对象为中心,这件事会这样说:我.喝(饮料);

三大基本特性:封装,继承,多态

        封装

封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

        继承

继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过 “继承”和“组合”来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。

        多态

多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值