3.1 面对对象的概念

面向对象是令大多数人都只可意会,难以言传的大概念。下面的讲解主要是为了迅速理解面向对象的内涵而来的,不见得非常严谨和完全正确,但我个人认为是合理的,是我的体会和认识,我也曾经用过同样的方式,让许多人仿佛一下子就明白了什么是面向对象什么是面向对象,这是一个相对概念,是相对面向过程而言的。就像要理解什么是幸福要先理解什么是痛苦一样的道理,在讲解面向对象之前,要先简单介绍一下什么是面向过程。

在早期出现的编程语言中,如大家都非常熟悉的C语言,要用这种语言来定义一个复杂的数据类型,譬如Windows 窗口时,可以用结构体(struct)来实现,只要在结构体中使用那些基本的数据类型来定义窗口的大小、位置、颜色、背景等属性就可以了。如果要对一个Windows 窗口进行各种操作,如隐藏窗口、移动窗口、最小化窗口等,就要为每个操作都定义一个函数,这些函数与窗口本身的定义没有任何关系,如 HideWindow、MoveWindow、MinimizeWindow,这些函数都需要接收一个参数,即要操作的窗口。这是、“移动”等是谓语,“窗口”是宾语。程序的重心集一种谓语与宾语的关系,“”中在函数(即谓语)上。

在 C++和 Java 语言中,我们可以将一个窗口当作一个主体(对象)来看待,定义窗口时,除了要指定在面向过程中规定的那些属性,如大小、位置、颜色、背景等外,还要指定该窗口可能具有的动作,如隐藏、移动、最小化等。在定义窗口时,就要定义好对应这些动作的函数(也叫方法),如Hide Move Minimize,注意体会这些函数名称与上面的名称的区别,这是作者刻意这么安排的,让读者更好地去对比,从函数名称上就能看出,这些函数都不再接受代表窗口的参数。这些函数被调用时,都是以某个窗口要隐藏,某个窗口要移动,某个窗口要最小化的语法格式来使用的。这是一种主语与谓语的关系,程序

的重点集中在主体/对象(主语)上。虽然读者在下面的讲解中会发现面向对象的知识远不止这一点(刚才讲的只是面向对象的一个方面,即封装性,用类封装了数据与函数),真正能体现面向对象的强大优势的地方,是在面向对象的继承与多态性方面,但作者认为,封装性是面向对象的根源和最根本的属性。

Java类同其他面向对象的编程语言一样,也支持面向对象 (OOP)的三个特征:

封装(Encapsulation)

继承(Inheritance)

多态(Polymorphism)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值