《Java面向对象》"花为诗"(二)面向对象与基于对象的区别

在上一章,我整理了面向对象与面向过程的区别,相信对大家有一定的帮助。在这一章中,我来给大家整理一下面向对象的特征,以及"基于对象"这个概念的理解。

一、面向对象的特征

面向对象是以类为基本单元,以对象为核心的编程思想,必须具备这三个特征:封装(Encapsulation),继承(Inheritance),多态(Polymorphism)。

1、封装

封装指的是将实现的具体细节隐藏起来,依据访问权限使用其功能或数据的一种形式。比如“顾客去饭店吃锅包肉”这件事,锅包肉的做法,对顾客是隐藏的,不可见的,也无需知道做法,做锅包肉是厨师的行为,我们只需要通知厨师,然后等待吃即可。

面向对象编程语言中,功能的实现细节放到Method中;Method和状态数据Field定义到一个类结构中,这都是封装的体现。

封装的优势

  • 安全性高。实现细节对于调用者是不可见的,安全性比较高
  • 重用性高。一次定义,到处都可以使用。
  • 维护成本低。开发人员想要修改具体实现逻辑时,只需要修改一处"定义时的逻辑"即可

2、继承

继承是面向对象编程语言中实现复用的重要手段,子类继承父类后,将直接获取父类的状态数据和行为。面向对象是以类为基本单位的,而类与类之间可能会存在相同的状态数据或者是相同的行为。比如人这种类型,有性别,年龄,身高,体重等状态数据,还有吃饭,睡觉,运动等等行为。当设计学生类型的时候,仍然有人这种类型的状态数据和行为。我们通过继承的方式,在设计学生类型时只需要继承人类型,那么就不需要重复定义相同的状态数据和行为了。提高了代码的复用性,减少了代码编写量。

面向对象编程语言中,继承具有传递性。继承可分为单继承和多继承,单继承是指子类只能拥有一个直接父类,多继承是指子类可以拥有多个直接父类(PS:java编程语言,不支持多继承,但是可以通过实现接口来达到多继承的效果)。

3、多态

多态是面向对象的继承特征产生的另外一种优势特征。即子类对象可以赋值给父类引用,在运行时依然表现出子类对象的行为特征。这就意味着,同一个对象会有不同的状态(比如,张三在家和公司的两种状态)和行为,同一个行为会有不同的实现细节(员工的工作行为,张三和李四的工作内容不同)。

在面向对象编程思想中,类是基本单元,类是现实世界中的一种事物的抽象体现。对象是程序运行时数据的载体,具有唯一性(世界上没有完全相同的两片叶子)。类是对象的抽象模板,对象是类的实例。

在这里说一下“抽象”这个概念,抽象是面向对象思想编程的重要体现,但它不是面向对象里的特征。抽象是开发人员在开发系统软件时所需数据从现实世界中事务的一种抽象体现。需要什么状态数据,什么功能,就参照现实世界抽象出对应的类,及其状态数据(成员变量)和方法(method)。

二、基于对象

在编程语言的领域中,还有一个概念:基于对象。这个概念与面向对象概念极易混淆。“基于对象”虽然也使用了对象作为数据的载体,但是无法使用现有的对象模板来产生新的对象模板,即不支持继承这个特点。没有继承的特征,也就没有多态的特征,因为多态是建立在继承特征之上的。例如,JavaScript就是基于对象的编程语言,它使用了一些封装好的对象,调用对象的方法,设置对象的属性等,但是无法派生出新的类型。

因此,想要区分编程语言是不是面向对象的语言,只需要分析这个编程语言是否有面向对象的三大特征(封装,继承,多态)。

------------------------------------如有疑问,敬请留言--------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值