【java学习】类的成员之三:构造方法(即构造器)(25)

news2024/10/5 2:11:01

文章目录

  • 1. 构造器(构造方法)基本概念
  • 2. 语法格式
  • 3. 构造器(构造方法)的种类
  • 4. 从代码中理解构造函数
  • 5. 练习题
    • 5.1. 题目1
    • 5.2. 题目2
    • 5.3. 题目3


1. 构造器(构造方法)基本概念

  1. 构造器的特征
    (1) 它具有与类相同的名称
    (2) 它不声明返回值类型。(与声明为 void 不同)
    (3) 不能被staticfinalsynchronizedabstractnative修饰,不能有return 语句返回值

  2. 构造器的作用:①创建对象;②给对象进行初始化
    (1) 如:Order o = new Order();Person p = new Person(Peter,15);
    (2) 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。

2. 语法格式

修饰符 类名 (参数列表) {
     初始化语句;
}

举例:

public class Animal {
	private int legs;
	
	// 构造器
	public Animal() {legs = 4;} 
	//如果不编写构造器,会使用系统默认的构造器
	
	public void setLegs(int i) {legs = i;}
	public int getLegs(){return legs;}
}

解释(对应上文构造器的作用):
    ①创建 Animal 类的实例: Animal a=new Animal();
    ②调用构造器,将 legs 初始化为 4 。

3. 构造器(构造方法)的种类

根据参数不同,构造器可以分为如下两类:
    (1) 隐式无参构造器(系统默认提供)
    (2) 显式定义一个或多个构造器(无参、有参)

注意:
    (1) Java 语言中,每个类都至少有一个构造器
    (2) 默认构造器的修饰符与所属类的修饰符一致
    (3) 一旦显式定义了构造器,则系统不再提供默认构造器
    (4) 一个类可以创建多个重载的构造器
    (5) 父类的构造器不可被子类继承

标重点:new对象 实际上就是调用 类的构造方法!

4. 从代码中理解构造函数

(1) 在显示构造方法中使用设定的默认值
创建一个Person5类:

package day06;

public class Person5 {
	/**
	 * 如果显示的定义了构造方法,那么就会使用显示的构造方法
	 */
	public Person5() {   //构造方法
		age = 1;            //设定的age默认值1
		name = "zhangsan";  //设定的name默认值zhangsan
	}
	
	public int age;
	public String name;
	public void showInfo() {
		System.out.println(age);
		System.out.println(name);
	}

}

编写Test.java调用Person5方法:

package day06;

public class Test {
	public static void main(String[] args) {

		Person5 p5 = new Person5(); //new就是调用构造方法的过程
		p5.showInfo();
	}

}

运行结果:
在这里插入图片描述
这个运行结果说明带调用了显示的构造方法

(2) 在调用构造方法过程,根据需要自己设定值

创建一个Person5类:

package day06;

public class Person5 {
	/**
	 * 可以写 带参数的构造方法
	 */
	public Person5(int a,String n) {   //给构造方法的 参数列表 添加 两个形参
		age  = a;
		name = n;
	}
	
	public int age;
	public String name;
	public void showInfo() {
		System.out.println(age);
		System.out.println(name);
	}

}

编写Test.java调用Person5方法:

package day06;

public class Test {
	public static void main(String[] args) {

		Person5 p5 = new Person5(2,"lisi"); //在new对象时,同样给参数列表的形参赋值
		p5.showInfo();
	}

}

运行结果:
在这里插入图片描述

5. 练习题

5.1. 题目1

  1. 在前面定义的 Person 类中添加构造器,利用构造器设置所有人的 age 属性初始值都为 18 。

答案1:

package day06;

public class Person6 {
	
	public Person6() { //构造器
		age = 18;
	}
	
	public int age;

}

Test.java

package day06;

public class Test {
	public static void main(String[] args) {

		Person6 p6 = new Person6();
		System.out.println(p6.age);   //运行Test.java后,输出构造方法中age的默认值18
	}

}

5.2. 题目2

  1. 修改上题中类和构造器,增加 name 属性 , 使得每次创建 Person 对象的同时初始
    化对象的 age 属性值和 name 属性值。
    在这里插入图片描述
    答案2:
package day06;

public class Person6 {
	
	public Person6(int a, String n) {
//		age = 18;
		age = a;
		name = n;
	}
	
	public int age;
	public String name;
}

Test.java

package day06;

public class Test {
	public static void main(String[] args) {

		Person6 p6 = new Person6(12,"zhangsan");
		System.out.println(p6.age);
		System.out.println(p6.name);
	}

}

Test.java运行结果:
在这里插入图片描述

5.3. 题目3

  1. 定义一个“点”( Point )类用来表示三维空间中的点(有三个坐标)。要求如下:
    (1) 可以生成具有特定坐标的点对象。
    (2) 提供可以设置三个坐标的方法。

答案:

package day06;

public class Point {    // 要求(1)
	public Point(int m, int n, int k) {
		x = m;
		y = n;
		z = k;
	}
	
	int x;
	int y;
	int z;
	
	public void setPoint(int m, int n, int k) {    //要求(2)
		x = m;
		y = n;
		z = k;
	}

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue基础-数字大屏】图表自适应大小

一、需求描述 缩放页面&#xff0c;页面中的图标自适应缩放 二、关键代码 1、图表横向全屏 <style scoped>#myecharts{ width: 100%;height: 600px; border: 2px solid rgb(0, 255, 255);} </style> 2、监听&#xff0c;使图表自适应缩放 myChart.setOption(o…

kubernetes环境 搭建

1、准备2台机器 2、安装docker环境&#xff08;参考官网&#xff09; 1、 sudo apt-get update sudo apt-get install ca-certificates curl gnupg2、 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dea…

代码随想录算法训练营第五十九天 |647. 回文子串、516.最长回文子序列、动态规划总结篇

一、647. 回文子串 题目链接/文章讲解&#xff1a;代码随想录 思考&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 如果本题定义dp[i] 为 下标i结尾的字符串有 dp[i]个回文串的话&#xff1a; 会发现很难找到递归关系&#xff0c;dp[i] 和 dp[i-1]…

ubuntu20.04 nerf Instant-ngp

Instant-ngp linux ubuntu 20.04 GPU RTX3050Ti Instant-ngp官方文档地址 https://github.com/NVlabs/instant-ngp 参考链接Instant-ngp linux部署及使用 - 简书 Ubuntu20.04复现instant-ngp&#xff0c;自建数据集&#xff0c;导出mesh_XINYU W的博客-CSDN博客 步骤 安装基…

Elasticsearch 分片内部原理—使文本可被搜索、动态更新索引

目录 一、使文本可被搜索 不变性 二、动态更新索引 删除和更新 一、使文本可被搜索 必须解决的第一个挑战是如何使文本可被搜索。 传统的数据库每个字段存储单个值&#xff0c;但这对全文检索并不够。文本字段中的每个单词需要被搜索&#xff0c;对数据库意味着需要单个字…

object property order

起因 使用 prosemirror 时&#xff0c;想要取 schema 实例设置的 nodes const mySchema new Schema({nodes: {doc: {},customBlock: {},text: {},},marks: {}, });在浏览器控制台查看 mySchema&#xff0c;发现两个地方有nodes&#xff1a; mySchema.nodes 是普通对象&…

某医疗机构:建立S-SDLC安全开发流程,保障医疗前沿科技应用高质量发展

某医疗机构是头部资本集团旗下专注大健康领域战略性投资与运营的实业公司&#xff0c;市场规模超300亿。该医疗机构已完成数字赋能&#xff0c;形成了标准化、专业化、数字化的疾病和健康管理体系&#xff0c;将进一步规划战略方向&#xff0c;为人工智能纳米技术、高温超导、生…

【分享】小红书采集图片下载到本地

前面我们把图片链接都存到了excel里&#xff0c;现在想要把图片都下载到本地文件夹 下面是实现的python代码 图片链接存在第三列单元格&#xff0c;并且是多个图片\n分割的&#xff0c;现在把他们全部下载到本地 import pandas as pd import requestsdf pd.read_excel(&quo…

关于scanf和printf的格式控制修饰符

关于scanf和printf的格式控制修饰符

input时间控件选择时禁用某个日期之前或之后

【版权所有&#xff0c;文章允许转载&#xff0c;但须以链接方式注明源地址&#xff0c;否则追究法律责任】【创作不易&#xff0c;点个赞就是对我最大的支持】 前言 仅作为学习笔记&#xff0c;供大家参考 总结的不错的话&#xff0c;记得点赞收藏关注哦&#xff01; 目录 …

应届生写简历不如AI?HR招人到底看什么

又双叒创新高&#xff01; 据悉&#xff0c;2024届高校毕业生人数预计有 1187 万人&#xff0c;比2023届将近多30万人&#xff01;相当于冰岛一个国家的人口啊&#xff01; 毋庸置疑&#xff0c;大学生的就业压力只增无减。也因此&#xff0c;2024届的应届生们为了博HR关注&…

2023年中国艺人管理行业发展历程及趋势分析:未来市场规模还会不断增加[图]

艺人管理行业是指一系列涉及艺人职业发展、形象管理、工作安排、合同管理、媒体宣传策划、财务管理等方面的专业服务和活动。它旨在协助艺人实现个人职业目标&#xff0c;提升艺人在娱乐行业中的知名度、影响力和经济效益&#xff0c;维持艺人形象的稳定和提高其工作的效率和质…

公众号营业执照注销被冻结了,怎么迁移?

公众号迁移后原来内容还在么&#xff1f;通过公众号迁移&#xff0c;可以实现这些目的&#xff1a;主体变更、开通留言功能、多号合并、订阅号升级为服务号、服务号转为订阅号。公众号迁移流程&#xff1a;①办理公证&#xff1b;②提交迁移申请&#xff1b;③第三方审核&#…

json库的基本使用

目录 1 将python变量转变为json变量 dumps() 2 将json变量转换为python变量 loads() 3 将键值对存储为json文件 dump() 4 读取json文件 前后端常用json进行信息的交互&#xff0c;不转json会有收不到的情况 我们先看一下转换成json的服务 发现该有的信息都有&#x…

实战指南:使用 kube-prometheus-stack 监控 K3s 集群

作者简介 王海龙&#xff0c;Rancher 中国社区技术经理&#xff0c;Linux Foundation APAC Evangelist&#xff0c;负责 Rancher 中国技术社区的维护和运营。拥有 9 年的云计算领域经验&#xff0c;经历了 OpenStack 到 Kubernetes 的技术变革&#xff0c;无论底层操作系统 Lin…

【JavaEE初阶】 死锁详解

文章目录 &#x1f38b;死锁的概念&#x1f333;死锁的三个典型情况&#x1f6a9;一个线程一把锁&#x1f6a9;两个线程两把锁&#x1f6a9;n个线程m把锁(哲学家就餐问题) &#x1f384;如何破除死锁&#x1f6a9;破坏循环等待 本文重点&#xff1a; 死锁咋回事 死锁的三个典型…

2023年中国石油催化裂化剂行业供需、竞争格局及市场规模分析[图]

催化裂化是石油炼制过程之一&#xff0c;是在热和催化剂的作用下使重质油发生裂化反应&#xff0c;转变为裂化气、汽油和柴油等的过程。中国原油加工量在这一阶段逐年提升&#xff0c;2022年国内原油加工量67589.7万吨。 2016-2022年中国原油加工量情况 资料来源&#xff1a;国…

learn编码器

目录 1、编码器的作用 2、编码器的结构图 3、代码实现如下 1、编码器的作用 编码器用于对输入进行指定的特征提取的过程&#xff0c;也称为编码&#xff0c;由 N 个编码器层堆叠而成 2、编码器的结构图 3、代码实现如下 import numpy as np from torch.autograd import Vari…

RabbitMQ开启消息跟踪日志(trace)

Trace 是Rabbitmq用于记录每一次发送的消息&#xff0c;方便使用Rabbitmq的开发者调试、排错。 1、启动Tracing插件 在RabbitMQ中默认是关闭的&#xff0c;需手动开启。此处rabbitMQ是使用docker部署的 ## 进入rabbitMq中 docker exec -it rabbitmq1 bash ## 启动日志插件 r…

基于图像的照明(IBL)简明教程

基于图像的照明基本上将图像中的所有像素视为光源。 通常&#xff0c;从全景高动态范围 (HDR) 图像创建的环境贴图&#xff08;通常是立方体贴图&#xff09;将用作纹理获取的源。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 假设阴影物体是不透明的&#xff0c;我们…