Java面向对象 构造器

目录

  • 构造器
    • 实例
      • 分析
    • 测试类Person01的构造器
    • 分析

构造器

Java中的构造器是一种特殊的方法,用于初始化新创建的对象。构造器与类同名,并且没有返回类型。它主要用于设置对象的初始状态,也可以用于执行一些必要的操作,例如分配资源或执行一些初始化任务。

构造器的使用场景如下:

  1. 创建对象:当我们要创建一个对象时,Java会自动调用相应的构造器来初始化对象。
  2. 设置对象的初始状态:构造器可以用来设置对象的初始状态,例如设置对象的属性值。
  3. 执行必要的操作:构造器可以在创建对象时执行一些必要的操作,例如分配资源、打开文件等。

构造器的语法如下:

public class ClassName {// 构造器定义public ClassName() {// 构造器体}
}

其中,ClassName 是构造器的名称,它与类名相同。构造器的访问修饰符可以是 publicprotectedprivate 或没有修饰符(默认)。构造器的返回类型是 void,因为它不返回任何值。构造器可以带有参数,以便在创建对象时提供初始值或执行其他操作。

实例

public class Person01 {//构造器:没有任何参数的构造器我们叫做:空参构造器--》空构造器public Person01(){/*age = 19;name = "lili";height = 169.5;*/}//属性:String name;int age;double height;//方法:public void eat(){System.out.println("我喜欢吃饭");}
}

分析

这段代码定义了一个名为Person01的Java类。这个类具有以下组成部分:

  1. 构造器:构造器是一种特殊的方法,用于初始化新创建的对象。这个类有一个公共的无参数构造器(空参构造器)。在这个构造器中,有一些被注释掉的代码,这些代码原本是用来初始化对象的属性(如agenameheight)的。

  2. 属性

    • name:一个String类型的属性,用于存储人的姓名。
    • age:一个int类型的属性,用于存储人的年龄。
    • height:一个double类型的属性,用于存储人的身高。
  3. 方法

    • eat():这是一个公共方法,它没有参数。当这个方法被调用时,它会输出“我喜欢吃饭”。

这个类是一个简单的Java类,用于表示一个人。不过请注意,如果你运行这个类并且创建了Person01的对象,但对象的属性(如agenameheight)并没有被初始化,那么这些属性将会有默认值。对于int类型的属性,默认值是0;对于String类型的属性,默认值是null;对于double类型的属性,默认值是0.0。如果你想在创建对象时初始化这些属性,你可以取消构造器中的注释,这样在创建对象时这些属性就会被初始化。

测试类Person01的构造器

public class Test01 {public static void main(String[] args) {//创建一个Person类的具体的对象/实例/实体:/*创建对象的过程:1.第一次遇到Person的时候,进行类的加载(只加载一次)2.创建对象,为这个对象在堆中开辟空间3.为对象进行属性的初始化动作new关键字实际上是在调用一个方法,这个方法叫构造方法(构造器)调用构造器的时候,如果你的类中没有写构造器,那么系统会默认给你分配一个构造器,只是我们看不到罢了。可以自己显式 的将构造器编写出来:构造器的格式:[修饰符] 构造器的名字(){}构造器和方法的区别:1.没有方法的返回值类型2.方法体内部不能有return语句3.构造器的名字很特殊,必须跟类名一样构造器的作用:不是为了创建对象,因为在调用构造器之前,这个对象就已经创建好了,并且属性有默认的初始化的值。调用构造器的目的是给属性进行赋值操作的。注意:我们一般不会在空构造器中进行初始化操作,因为那样的话每个对象的属性就一样了。实际上,我们只要保证空构造器的存在就可以了,里面的东西不用写*/Person01 p = new Person01();System.out.println(p.age);System.out.println(p.name);System.out.println(p.height);Person01 p2 = new Person01();System.out.println(p2.age);System.out.println(p2.name);System.out.println(p2.height);}
}

在这里插入图片描述

分析

定义了一个名为Test01的类,并在其中创建了一个Person01对象。以下是代码的详细解释:

  1. public class Test01 { ... }: 定义了一个名为Test01的公共类。
  2. public static void main(String[] args) { ... }: 这是Java程序的入口点,即主方法。当你运行这个Java程序时,它会从这里开始执行。
  3. Person01 p = new Person01();: 这行代码创建了一个Person01类的对象,并将其引用赋值给变量p
  4. System.out.println(p.age);: 打印变量p中的age属性的值。
  5. System.out.println(p.name);: 打印变量p中的name属性的值。
  6. System.out.println(p.height);: 打印变量p中的height属性的值。
  7. Person01 p2 = new Person01();: 创建了另一个Person01类的对象,并将其引用赋值给变量p2
  8. 接下来的三行代码与之前的代码相同,只是这次它们打印的是变量p2的属性值。

在空构造器中不进行初始化操作以避免所有对象的属性值都一样。

这个代码示例中,由于没有在Person01类中定义任何构造器或初始化属性,所以当你尝试访问这些属性时,它们的值将是默认的(例如,对于int类型的属性,默认值为0;对于String类型的属性,默认值为null;对于double类型的属性,默认值为0.0)。如果你想在创建对象时初始化这些属性,你需要在Person01类中定义一个构造器来完成这个任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/455517.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型|基础_word2vec

文章目录 Word2Vec词袋模型CBOW Continuous Bag-of-WordsContinuous Skip-Gram存在的问题解决方案 其他技巧 Word2Vec 将词转化为向量后,会发现king和queen的差别与man和woman的差别是类似的,而在几何空间上,这样的差别将会以平行的关系进行表…

读千脑智能笔记05_千脑智能理论

1. 现有的新皮质理论 1.1. 最普遍的看法是新皮质就像一个流程图 1.2. 特征层次理论 1.2.1. 该理论最大的弊端在于认为视觉是个静止的过程,就像拍一张照片一样,但事实并非如此 1.2.1.1. 眼睛每秒会快速转…

如何在Termux中使用Hexo结合内网穿透工具实现远程访问本地博客站点

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

4.0 Zookeeper Java 客户端搭建

本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 IntelliJ IDEA 相关介绍:…

axios封装取消请求的方式

问题:项目中涉及tab切换页,tab1和tab2列表数据字段相同,所以一般使用el-tabs组件;el-tabs中的每一项el-tab 是通过v-for遍历产生的,所有的每一项el-tab中的table表格数据使用的是一个tableData存储的;此时会有问题;我们点击tab1时发送请求获取数据保存在tableData中,点击tab2时…

leecode172 | 阶乘后的零 | 傻瓜GPT

题意 给定一个整数 n ,返回 n! 结果中尾随零的数量。提示 n! n * (n - 1) * (n - 2) * ... * 3 * 2 * 1//题解 class Solution { public:int trailingZeroes(int n) { // ...*(1*5)*...*(x*5)*...*(1*5*5)*...*(x*5*5)*...*n 然后倒过来 //...∗(1∗5)∗...∗…

电脑文件msvcr120.dll丢失怎样修复?一键修复msvcr120.dll的方法

近期发现众多用户向小编询问关于“msvcr120.dll文件应该放置在何处”的问题,这可能暗示着该文件丢失的情况变得普遍。面对这种情况,小编认为有必要向大家提供一个详尽的指导,帮助解决 msvcr120.dll 文件丢失的难题。接下来,让我们…

Vivado-IP核

Vivado-IP核 主程序 timescale 1ns / 1ps ////module ip_clk_wiz(input sys_clk,input sys_rst_n,output clk_out1,output clk_out2,output clk_out3,output clk_out4,output locked);clk_wiz_0 instance_name(// Clock out ports.clk_out1(clk_out1), // output clk_out…

ElasticSearch-SpringBoot整合ElasticSearch

六、SpringBoot整合ElasticSearch 1、浏览官方文档 1、查找跟ES客户端相关的文档 使用Java REST Client 选择Java Hight Level REST Client 2、创建项目的准备 1.找到原生的依赖 2.找到对象 3.分析这个类里面的方法 3、正式创建项目 1.创建工程 2.导入依赖 注意依赖版本…

华为视频监控接入到视频监控平台 (华为网路监控摄像机IPC和华为视频节点设备VCN)

目 录 一、设备介绍 1.1 华为VCN介绍 1.2 AS-V1000视频监控平台介绍 1.3 平台服务器配置说明 二、安装、配置HW_IVS软件 2.1下载安装HW_IVS软件 2.2登录HW_IVS 2.3共享到外域 三、配置华为外域参数 3.1 PCG模块设置 3.2通信协议GBT28181配置 3.3传…

OpenCV 图像处理六(傅里叶变换、模板匹配与霍夫变换)

文章目录 一、傅里叶变换1.1 NumPy实现和逆实现1.1.1 NumPy实现傅里叶变换Demo 1.1.2 NumPy实现逆傅里叶变换Demo 1.2 OpenCV实现和逆实现1.2.1 OpenCV实现傅里叶变换Demo 1.2.2 OpenCV实现逆傅里叶变换Demo 1.3 频域滤波1.3.1低频、高频1.3.2 高通滤波器构造高通滤波器Demo 1.…

[嵌入式AI从0开始到入土]13_orangepi aipro开箱测评

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…