Java:什么是对象

2023-01-02 0 261

抽象化的心路历程

大部份编程词汇都是一类抽象化,甚至能说,他们能解决的问题的精确性依赖于抽象化的类别和质量。

Smalltalk 是历史上因节取得成功的面向第两类词汇,也为 Java 提供更多了意念。它有 5 个基本特点:

天地万物皆第两类。一段流程实际上是数个第两类透过推送最新消息的形式来告诉彼此之间该做甚么。透过女团的形式,能将数个第两类PCB成其它更为此基础的第两类。第两类是透过类示例化的。同两类别的第两类能转交完全相同的最新消息。

归纳一句话是:

状态+犯罪行为+标记=第两类,每个第两类在缓存中单厢有两个唯一的门牌号。

第两类具备USB

大部份的第两类,都能被归为两类,并且同两类第两类拥有一些共同的犯罪行为和特点。在 Java 中,class URL用来表述两个类别。

建立抽象化数据类别是面向第两类编程的两个基本原理。你能建立这种类别的表达式,Java 中称作第两类或是示例,然后你就能操作那些表达式,Java 中称作推送最新消息或是推送允诺,最后第两类决定自己该怎么做。

类叙述了一系列具备完全相同特点和犯罪行为的第两类,从笼统的概念上来说,类其实是一类自订的数据类别。

一旦建立了两个类,就能用它建立任一数个第两类。面向第两类编程词汇遇到的最大两个考验是,如何把现实/交互式的原素抽象化为 Java 中的第两类。

第两类能转交甚么样的允诺是由它的USB表述的。具体是怎么努力做到的,就由它的同时实现方法来同时实现。

出访职权缩排

类的建立人有时也被称作 API 接受者,相关联的,类的普通用户就被称为 API 分配器。

JDK 就给他们提供更多了 Java 的此基础同时实现,JDK 的译者也是此基础 API 的接受者(Java 多处理器部分的译者 Doug Lea 是被 Java 开发人员钦佩的两个元老),他们那些 Java 词汇的普通用户,说到底是 JDK 的分配器。

当然了,倘若他们也提供更多了捷伊类给其它分配器,他们也就成为了捷伊建立人。

API 建立人在建立捷伊类的时候,只曝露必要的USB,而暗藏其它大部份不必要的重要信息,或许要这么做,是因为如果那些重要信息对分配器是不由此可见的,那么建立人就能随便修正暗藏的重要信息,而不用担心对分配器的影响。

这里就必须要讲到 Java 的职权缩排。

出访职权缩排的第两个作用是,防止类的分配器接触到他们不该接触的内部同时实现;第二个作用是,让类的建立人能轻松修正内部机制而不用担心影响到分配器的使用。

publicprivateprotected

还有一类“默认”的职权缩排,是缺省的,它修饰的类能出访同两个包下面的其它类。

女团

他们能把两个建立好的类作为另外两个类的成员表达式来使用,利用已有的类组成成两个捷伊类,被称作“复用”,女团代表的关系是 has-a 的关系。

继承

继承是 Java 中非常重要的两个概念,子类继承父类,也就拥有了父类中 protected 和 public 修饰的方法和字段,同时,子类还能扩展一些自己的方法和字段,也能重写继承过来方法。

常见的例子,是形状能有子类圆形、方形、三角形,它们的此基础USB是完全相同的,比如说都有两个 draw() 的方法,子类能继承这个方法同时实现自己的绘制方法。

如果子类只是重写了父类的方法,那么它们之间的关系是 is-a 的关系,但如果子类增加了捷伊方法,那么它们之间的关系就变成了 is-like-a 的关系。

多态

比如说有两个父类Shape

public class Shape { public void draw() { System.out.println(“形状”); } }

子类Circle

public class Circle extends Shape{ @Override public void draw() { System.out.println(“圆形”); } }

子类Line

public class Line extends Shape { @Override public void draw() { System.out.println(“线”); } }

测试类

public class Test { public static void main(String[] args) { Shape shape1 = new Line(); shape1.draw(); Shape shape2 = new Circle(); shape2.draw(); } }

运行结果:

线 圆形

在测试类中,shape1 的类别为 Shape,shape2 的类别也为 Shape,但调用 draw() 方法后,却能自动调用子类 Line 和 Circle 的 draw() 方法,这是为甚么呢?

其实是 Java 中的多态。

《on Java 中文版第一章甚么是第两类,阅读笔记》

另外,以上内容也会收录到 GitHub 星标 2.0k 的 Java 开源笔记上:

GitHub – itwanger/toBeBetterJavaer: 一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java此基础、Java并发编程、Java交互式机、Java企业级开发、Java面试等核心知识点。学Java,就认准Java 开发人员进阶之路

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务