当前位置: 首页 > news >正文

Java 构造器

简介

Java 构造器是类的一种特殊方法,它在创建对象时被调用,用于初始化对象的状态。构造器的名称与类的名称相同,并且没有返回值类型。构造器的主要作用是为新创建的对象设置初始值

构造器的类型

默认构造器

如果你没有写一个构造器方法,那么 JAVA 会给你一个默认构造器,默认构造器没有任何参数

public class Person {private String name;private int age;// 默认构造器public Person() {name = "Unknown";age = 0;}
}

有参数构造器

既然有没有参数的构造器,那么肯定就有有参数构造器

public class Person {private String name;private int age;// 带参构造器public Person(String name, int age) {this.name = name;this.age = age;}
}

构造器重载

Java中通过参数列表的不同区别来灵活的实例话不同的对象

public class Person {private String name;private int age;// 默认构造器:无参数public Person() {this.name = "Unknown";this.age = 0;}// 带一个参数的构造器:只传递姓名public Person(String name) {this.name = name;this.age = 0;  // 默认年龄为0}// 带两个参数的构造器:传递姓名和年龄public Person(String name, int age) {this.name = name;this.age = age;}// 打印信息的方法public void display() {System.out.println("Name: " + this.name + ", Age: " + this.age);}public static void main(String[] args) {// 创建不同的对象实例Person p1 = new Person();  // 调用默认构造器Person p2 = new Person("Alice");  // 调用带一个参数的构造器Person p3 = new Person("Bob", 25);  // 调用带两个参数的构造器// 输出对象信息p1.display();  // Name: Unknown, Age: 0p2.display();  // Name: Alice, Age: 0p3.display();  // Name: Bob, Age: 25}
}

构造器中调用构造器

Java 中可以通过 this 关键字,在构造器中调用构造器,减少代码量

public class Person {private String name;private int age;// 默认构造器:无参数public Person() {// 调用带有两个参数的构造器this("Unknown", 0);}// 带有一个参数的构造器:传递姓名public Person(String name) {// 调用带有两个参数的构造器this(name, 0);  // 默认年龄为0}// 带有两个参数的构造器:传递姓名和年龄public Person(String name, int age) {this.name = name;this.age = age;}// 打印信息的方法public void display() {System.out.println("Name: " + this.name + ", Age: " + this.age);}public static void main(String[] args) {// 创建不同的对象实例Person p1 = new Person();  // 调用默认构造器Person p2 = new Person("Alice");  // 调用带一个参数的构造器Person p3 = new Person("Bob", 25);  // 调用带两个参数的构造器// 输出对象信息p1.display();  // Name: Unknown, Age: 0p2.display();  // Name: Alice, Age: 0p3.display();  // Name: Bob, Age: 25}
}

相关文章:

  • 基于Pytest接口自动化的requests模块项目实战以及接口关联方法详解
  • 稳扎稳打,25西电生命科学技术学院(考研录取情况)
  • Git命令(Gitee)
  • 10 DPSK原始对话记录
  • spring项目rabbitmq es项目启动命令
  • Node.js 应用部署:镜像体积优化与安全的多阶段构建探索
  • 神经编译革命:如何用脑机接口直接编程量子计算机?
  • Java求职者面试:从Spring Boot到微服务的技术深度探索
  • TypeScript 入门到进阶全讲解(超全版)
  • 【计算机网络】Linux网络的几个常用命令
  • OceanBase数据库磁盘空间管理
  • 量子网络:构建未来通信的超高速“高速公路”
  • Flutter 在 Dart 3.8 开始支持 Null-Aware Elements 语法,自动识别集合里的空元素
  • 探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码
  • Arduino 入门学习笔记(六):外部中断实验
  • 从暴力到优化:如何统计符合特殊条件的三元子数组
  • flutter 选择图片 用九宫格显示图片,右上角X删除选择图片,点击查看图片放大缩小,在多张图片可以左右滑动查看图片
  • ‌RISC-V架构的低功耗MCU多电压域优化设计
  • 智能硬件行业售后服务管理:提升客户体验的关键所在
  • 极简主义在 UI 设计中的应用与实践:打造简洁高效界面
  • 银川市长信箱被指“已读乱回”,官方通报:对相关责任人问责处理
  • 公交公司须关注新出行需求:“单车巴士”能否常态化
  • 特朗普承认“24小时结束俄乌冲突”是玩笑:大家都知道
  • 特朗普政府称将恢复被终止的外国学生合法身份
  • 安徽铁塔回应“指挥调度中心大屏现不雅视频”:将严肃处理
  • 加拿大财长:加拿大需要抗击美国关税