重学Java(一):什么是对象

前言

本系列文章内容来自于《Thinking in Java》作者的最新续作《On Java》基础卷,作者根据最新 Java 8、11、17的内容,重讲了Java的编程思想,值得初学者阅读。

引子

编程语言是用于创建应用程序的思维模式。而面向对象编程(OOP)是使用计算机作为表达媒介的一种尝试。

抽象

所有编程语言都是一种抽象。汇编语言对计算机底层进行了抽象,一些命令式的编程语言对汇编语言进行了抽象,这些抽象的方式主要是根据计算机的结构来决定的,而不是实际解决问题的方式

在这种情况下,程序员必须必须在机器模型(实际解决问题的方式,如计算机)和问题模型(问题实际存在的地方,比如某个业务逻辑)建立关联。

而面向对象编程通过其向程序员提供的展示问题模型的通用工具,使程序员可以不再局限于特定的问题。问题模型中的元素以及其解决方案中的具体呈现,就是对象

面向对象编程的语言,有以下几个基本特征

  • 万物皆对象。
  • 一段程序实际上就是多个对象通过发消息来通知彼此干什么。
  • 从内存角度而言,每一个对象都是由其他更为基础的对象组成的。
  • 每一个对象都有类型
  • 同一类型的对象可以接受相同的消息

接口

创建抽象数据类型(即)是面向对象编程的基本概念。描述了一系列具有相同特征(数据元素)和行为(功能方法)的对象,是一种数据类型。

抽象数据类型和内置数据类型不同的是,可以通过一个新定义的类来解决问题,而不局限于内置数据类型。

一旦创建了类之后,就可以用它创建多个对象。对象发挥作用,是它的接口决定的。而它所属的则定义了这些接口。

Light lt = new Light();
lt.on();

以上代码加上隐藏的数据,是对类 Light 中方法on()实现

对象提供服务

从要解决的问题开始,可以拆分其为一系列的对象,然后将其简化为对象提供的服务,来简化问题。

让对象提供服务,还能提升对象的聚合程度,体现高内聚性

实现

类创建者在创建新类时,只暴露必要的接口给其使用者,同时隐藏其他不必要的信息。隐藏代码的具体实现可以有效减少程序错误。

设置访问控制的首要原因,一是防止使用者接触到他们本不该触碰到的内容,二是让库的设计者在改变类内部的工作机制时,不用担心其是否会影响到使用者。

未完待续

posted @ 2022-06-12 19:58  wx2020  阅读(262)  评论(0编辑  收藏  举报