首页 > 编程语言 >这才是java对象正解

这才是java对象正解

时间:2023-11-20 14:01:55浏览次数:31  
标签:这才 对象 Person Java 实例 引用 Child java

这才是 Java 对象正解

 

在深入讨论对象之前,让我们先明确对对象和实例的理解。

什么是对象?

对象(Object)是内存中分配的实际数据结构,它包含了数据和方法。在 Java 中,对象是类的一个实例,可以是具体类(例如 Child)的实例,也可以是抽象类或接口的实现类的实例。对象是具体的实体,它具有特定的属性和行为。

实例(Instance)是什么?

实例(Instance)是指一个对象被创建出来并分配了内存空间的过程。这个对象可以是某个类的实例,也可以是子类的实例。实例化是创建对象的过程。

类(Class)是什么?

一个类就好比一个大集体,比如人类。这个类包含了具有相同特征的多个个体,例如张三、李四等。在 Java 编程中,如果我们要表示这个类的所有成员,就需要定义这些成员共有的属性,比如鼻子、眼睛、身高、年龄等等。

在《Java编程思想》这本书中提到,每一个对象都是某一个类的一个实例,其中 "类" 表示一种类型,即某类具有相同特征的事物的模板。

 

然而,有时候容易混淆对象和实例的关系。举个例子:

Person example = new Person();

在这个例子中,我们使用 new 关键字,在内存堆中创建了一个 Person 对象,而 example 是这个 Person 对象的引用变量。在这里,我们可以说 example 这个引用变量对应的对象是 Person 类的一个实例。

在面向对象编程中,实例和对象通常可以互换使用的概念。

再来看一个例子,以更好理解 Java 对象:

// Child extends Person
Person example1 = new Child();

在这行代码中,我们使用 new 关键字创建了一个 Child 类的实例(对象),并将这个 Child 对象赋值给了 example1 引用变量。因为 childPerson 的子类,所以这里可以将 Child 类的值赋值给 Person 类的引用变量。

关键点在于,尽管 example1Person 类的引用,但实际上它引用的是 Child 类的对象。这意味着 example1 可以访问 Person 类中的属性和方法,但不能访问 Child 类中特有的属性和方法,除非进行类型转换。

因此,实例化过程(new Child())创建了一个对象,并将其分配给一个引用变量,但这并不意味着对象包含了所有的属性和方法,而是取决于引用变量的类型和对象的实际类型。在代码示例中,example1Person 类的引用,但引用的是 Child 的对象,这就反映了多态性的概念,其中一个引用可以引用不同类型的对象,从而在调用相同的方法时产生不同的行为。

总结:了解以上内容后,我们知道在面向对象编程中,对象和实例在大多数情况下是一样的概念,可以互换使用,只不过在某些特定的上下文中会存在差异。

标签:这才,对象,Person,Java,实例,引用,Child,java
From: https://www.cnblogs.com/zhiliu/p/17685427.html

相关文章

  • 什么是Java中的process_reaper线程?
     随着时间的推移,我在应用程序中获得了成百上千个这样的process_reaper线程。有人知道这些可能是什么吗?它们似乎是在我的Runtime.exec()中使用的,但是我在finally语句中销毁了我的进程,但它们仍然会出现屏幕截图:http://www.dropmocks.com/mBxM5Processproc=null;Str......
  • 掌握Java面向对象OOP篇(一)
    掌握面向对象OOP篇(一)边学边记--OOP(ObjectOrientatedPrograming)1.为什么要引入面向对象?原因:封装、继承、多态举个例子理解面向对象代码的好处:比如:我们有一个实际问题,假设现在一个宠物店有两只小狗,第一只叫做小白,年龄2岁,白色;第二只叫做小红,年龄3岁,红色;现在我们的宠物......
  • JAVA分批处理数据简单示例
    功能描述在处理业务时,经常遇到需要分批次处理数据的场景,例如有105条数据,每次推送20条,分批次推送最后不足20条数据时,一次性推送全部剩余数据DEMO示例packageshiguang.test;importjava.util.ArrayList;importjava.util.List;publicclassBatchProcessingExample{......
  • Java 学生管理系统
    需求:​ 采取控制台的方式去书写学生管理系统。分析:初始菜单:"-------------欢迎来到学生管理系统----------------""1:添加学生""2:删除学生""3:修改学生""4:查询学生""5:退出""请输入您的选择:"学生类:​ 属性:id、姓名、年龄、家庭住址添加功能:​ 键盘录入每一个学生信......
  • java数值前面补零
    Java数值前面补零在Java编程中,有时候我们需要对数字进行格式化,例如在输出时希望数字的前面补零。这在一些情况下是很有用的,比如显示日期、时间、序列号等。在本文中,我们将介绍几种方法来实现Java数值前面补零的操作,并提供相应的代码示例。使用String类的format方法Java中的String......
  • Java -day3
    四方法4.4命令行传递参数main方法也可以传递参数通过cmd命令提示符运行先编译注意包的位置(回退)publicclassDemo03{publicstaticvoidmain(String[]args){for(inti=0;i<args.length;i++){System.out.println(args[i]);......
  • java pdf数字签证(图片),根据关键字定位签证位置
    网上找了很多,最后还是结合了一下才能用。 用到的主要jar包:itextpdf-5.5.13.jar,bcprov-jdk15on-1.49.jar,bcpkix-jdk15on-1.50.jarmain测试:importjava.io.FileInputStream;importjava.io.FileOutputStream;importstaticweaver.interfaces.workflow.action.hrm.Test.PdfU......
  • [实验任务一]:JAVA和C++常见数据结构迭代器的使用
    信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。实验要求:1. 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector,list,map和set等......
  • Java开发者的Python快速进修指南:函数进阶
    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。匿名函数在Python中,匿名函数也被称为lambda函......
  • JS如何做到面向对象
    JS本省没有面向对象,它是如何来做类,和类的实例的呢?。1:函数对象的prototype   每个函数对象都有一个prototype成员,指向一个表, functiona(){};  a.prototype指向一个表对象2:表的__proto__  每个js表(Object)对象,都会有一个成员__proto__, 指向一个表(Object)......