JAVA是一门基于面向对象程序设计(简称OOP)的语言,那么对象究竟是什么呢?
入门的时候,时常听JAVA老司机们念叨:“万物皆对象”。首先,我们必须明白编程是为了解决现实中的问题,以建立一个线上图书馆系统为例,需要管理的最底层对象便是“书籍”,要把“书籍”抽象为计算机语言中的模型,便是我们熟知的对象。
一般称问题存在的地方为“问题空间”,对问题进行建模的地方为“解空间”,编程就是要打通两个空间的联系。例如“书籍”拥有名称、作者、版号等信息,我们将这类字段定义为对象得属性,表示不同书籍的状态;“书籍”需要保存书签、检索等功能,我们便在“书籍”中编写不同的方法,表示“书籍”的不同行为;每一本“书籍”都是独一无二的,它在内存中拥有唯一的(标识)地址。
“书籍”通常是摆放在“书架”上,我们继续定义“书架”的属性:书架号、容纳书籍数、层数、长度、宽度、高度等信息;并为“书架”编写方法,提供上架、下架等功能。有时我们需要拿取“书架”上的某本“书籍”,此时“书架”和“书籍”之间便需要进行通信,需要在“书架”内编写查找本书架上某本书籍的方法,通过此方法返回“书籍”对象,又可通过“书籍”对象执行“书籍”相关的(行为)方法。
不同的对象拥有不同的类型,比如“书籍”是“书籍”,“书架”是“书架”,它们具有不同的属性和方法。但是“书籍”拥有可扩展性,小说、传记、教辅这类都属于书籍,但确拥有不同的特性,不过都还是能统称为“书籍”,我们在下篇文章中会继续介绍。
总的来说,对象拥有五个基本特性:
1.万物皆对象
任何待求解得问题都可以抽象成程序中的对象。
2.程序是对象的集合
程序是由不同的对象组成,不同的对象互相发送调用请求,来实现各种功能,从而构建成系统。
3.每个对象对象都可由其他对象构成
可以通过现有对象来构建新的对象,比如我们构建“书架”时,可以定义“书架”中的“书籍”拥有哪些属性或者方法。在构建复杂的体系时,可以将其复杂性隐藏在对象得简单性之后。
4.每个对象都拥有类型
每个对象都是基于某个类(class)来构建得实例,每个类中拥有不同的属性和方法。
5.某一特定类型的所有对象可以接收同样的消息
“小说”是书籍,“传记”也是书籍,它们内部可以根据的自身特性定义不同的方法(“小说”提供获取小说主要人物的方法,“传记”提供获取所有大事记的方法),它们都是基于“书籍”对象演化而来,也都可以提供获取书籍名称的方法,供其他对象调用。
如果你觉得上述的5条有些繁琐,那还有更加简洁的描述:对象具有状态(属性)、行为(方法)和标识(唯一内存地址)。
本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。
若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!