台湾uu聊天室繁体版_深入理解类、对象、引用之间的关系

原文地址:https://dwz.cn/WTfSXMN0

原文作者:薛勤

本文旨在扫盲,深入理解类、对象、引用三者之间的关系,在处理 a = b = c 这类问题上可以有清晰无误的思考。

一、什么是类

类是模板,描述对象的行为和状态。

拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。

说白了,类别是我们自然界的统称,如人、狗、车等。我们已经在实际生活中,积极地把这个概念扩展到软件开发中,是我们自己写的class文件。

具体来说,我们自己调整了哪些东西。例如,你可以把狗分成一个类别,但是狗中的杜宾犬也可以分成一个类别。举个例子,一家专门销售杜宾犬的店铺,可以对所有杜宾犬进行编号,记录每只杜宾犬的名字,用餐时间。

二、什么是对象

对象是类别的例子,具有状态和行为。

如果类别指的是某个类别,对象就是这个类别的具体东西。例如,狗具体分为拉布拉多、哈斯基、巴哥犬、吉娃娃等。它们都有自己独特的状态:名字、品种、颜色,以及独特的行为:叫、摇尾巴和跑。与现实对象和软件对象相比,它们非常相似。台湾uu聊天室繁体版

软件对象也有状态和行为。软件对象的状态是属性,行为用方法表现出来。

在软件开发中,方法操作对象内部状态的变化,对象的相互调用也用方法完成。

三、类与对象

类是我们所写的 class 文件,抽象出了一系列状态和行为,台湾uu聊天室繁体版是我们实例化具体对象的模板。

比如我们有一个类(Dog.class),代码如下:

public class Dog{ String breed; int age; String color; void barking(){ }  void hungry(){ }  void sleeping(){ }

在Java中,使用关键字new来创建一个新的对象。

newDog()

通过new关键词,完成了抽象类实例化的具体对象步骤。另外,在内存空间中,台湾uu聊天是真有破解版ios保存这个实例对象的区域增加了。如图所示:

四、对象和引用

对象已经出现了new,台湾uu聊天室繁体版如何发出指令调用对象自己的属性和方法?

需要引用来实现指令的操作。

Java引用的代码声明如下:

Dogdog

使用等号(=)引用与对象链接,代码如下:

Dog=newtdog()

使用等号(=)引用与对象链接,代码如下:

dog=tdog=newtdog()

更清晰的理解图3所示:

引用实现命令的操作,命令的执行由对象自己完成。比如下面这段代码:

Dog dog = new Dog();dog.sleeping()

在内存空间中的执行原理如图五所示:

引用 dog 发出执行 sleeping() 方法的指令,具体的执行完全是由内存中的 Dog 对象来完成的。

五、引用传递

对于上述中的引用指向对象,执行的过程已经清晰明了,那么对于引用指向引用的情况又该如何去做呢?比如下面这段Java代码:

Dog dog1 = new Dog();Dog dog2 = dog1;dog1 = null;dog2.sleeping()

此时执行代码的最后一行究竟会不会报错呢?答案是不可能的。

因为引用A指向引用B,实际上是指向引用B指向的内存空间,并不是指向引用本身。

上述代码用图6表示,

引用可以理解为没有空间的存在,只要使用引用,就必须给予初始值(可以是ponull)。

在,没有引用,只有指针。在Java的世界里,没有指针,只有引用。事实上,Java的引用是c中的指针,Java只是包装了这个指针,避免了麻烦的指针操作。

六、课后练习

不运行代码,你可以分析出这段Java代码的执行逻辑吗?(推荐使用上述图像的形式进行图像分析)

publicliclacliclashodebooktor{Nodeprv;Nodernext;提上推荐的publicNode(inthid);向上推荐{this.id=id;}publicstaticlicmaindmain(Stringlint){nodewhis.id=id;向上推荐;}publidexlicliclics=ict;向上推荐的推荐;向上推荐的推荐;向上推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐推荐=null);Nodebon=hd;dot{。{system.out.println(n.id);}while(nf=n.next)!=null);}

我现在正在开发Java。如果你现在知道Java技术,想学好Java,想成为Java开发工程师,在开始学习Java的过程中缺乏基本的入门视频教程,你可以关注我:01。这里有最新的Java基础JavaSE精致的视频教程。这个视频教程是我年初根据市场技术堆栈的需要录制的,非常系统完整。

发表评论

您的电子邮箱地址不会被公开。