学习JavaEE的日子 day12 构造方法 类的制作
Day12
需求:创建人类的对象,并操作对象
分析:
人类 - Person
属性:name、sex、age
方法:eat、sleep
场景:创建多个对象,去操作对象
//测试类:该类中有main方法,测试我们写好的代码
public class Test01 {
public static void main(String[] args) {Person p1 = new Person();Person p2 = new Person();p1.name = "巴得伟";p1.sex = '男';p1.age = 23;p2.name = "波多野结衣";p2.sex = '女';p2.age = 18;p1.eat();p1.sleep();p2.eat();p2.sleep();Person.method();}
}
public class Person {//成员变量String name;char sex;int age;//成员方法public void eat(){System.out.println(this.name + "吃饭饭");}//成员方法public void sleep(){System.out.println(this.name + "睡觉觉");}//静态方法public static void method(){System.out.println("静态方法");}
}
面向对象内存图:
注意:
1.class文件只加载一次
2.class文件中包含了该类中的所有信息(包含方法等)
3.new对象会在堆中开辟空间,存储成员变量
4.成员变量系统会赋默认值
5.每个对象共享一份成员变量
6.方法中的this表示调用该方法的对象(谁调用的,this - 就指向谁)
7.成员方法可以调用this
8.静态方法使用类名调用,所以静态方法内不能使用this
1.构造方法
前言 - 创建对象的语法:类型 引用 = new 构造方法;
含义:与类名相同,且没有返回项的方法(在类中定义的。方法名与类名字相同,无返回值类型声明(包括void)。)
作用:
1.和new关键字在一起表示创建对象
2.初始化数据
注意:
- 1.创建对象的过程(Person p = new Person()😉,也叫做实例化
- 2.当类中没有有参构造时,系统会默认实现无参构造
经验:类中编写了有参构造,我们记得把无参构造加上
需求:创建人类,操作对象
public static void main(String[] args) {//类型 引用 = new 构造方法;Person p = new Person("巴得伟", '男', 23);System.out.println(p.name);System.out.println(p.sex);System.out.println(p.age);p.eat();p.sleep();}
}
public class Person {//成员变量String name;char sex;int age;//构造方法 - 无参构造public Person(){System.out.println("无参构造");//初始化数据this.name = "默认值";this.sex = '男';this.age = 0;}//构造方法 - 有参构造public Person(String name,char sex,int age){System.out.println("有参构造");this.name = name;this.sex = sex;this.age = age;}//成员方法public void eat(){System.out.println(this.name + "吃饭饭");}//成员方法public void sleep(){System.out.println(this.name + "睡觉觉");}
}
构造方法内存图:
public class Person{//注意:这种不是构造方法,是成员方法public void Person(){}
}
1.1 构造方法的注意事项
* 构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
* 构造方法的重载
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
* 推荐的使用方式
无论是否使用,都手工书写无参数构造方法
* 重要功能
可以使用带参构造,为成员变量进行初始化
每一个类中都有一个默认的无参的构造方法。
构造方法可以有多个,但参数不一样,就是重载。
1.2 赋值方式
创建对象并为其成员变量赋值的两种方式
1:无参构造方法创建对象后使用setXxx()赋值
2:使用带参构造方法直接创建带有属性值的对象
public class StudentDemo {public static void main(String[] args) {//无参构造方法创建对象后使用setXxx()赋值Student s1 = new Student();s1.setName("小彭");s1.setAge(21);s1.show();//使用带参构造方法直接创建带有属性值的对象Student s2 = new Student("小彭",21);s2.show();}}
1.3 idea直接生成构造方法
鼠标右键,选择生成,找到get、set,ctrl+a全选一键生成。
或者鼠标右键,选择 ptg to javaBean,一键生成。
2.标准类制作
① 类名需要见名知意
② 成员变量使用private修饰
③ 提供至少两个构造方法
无参构造方法
带全部参数的构造方法
④ get和set方法
提供每一个成员变量对应的setXxx()/getXxx()
⑤ 如果还有其他行为,也需要写上
案例:
public class User {//1.私有化全部的成员变量//2.空参构造//3.带全部参数的构造//4.针对于每一个私有化的成员变量都要提供其对应的get和set方法//5.如果当前事物还有其他行为,那么也要写出来,比如学生的吃饭,睡觉等行为private String username;//用户名private String password;//密码private String email;//邮箱private char gender;//性别private int age;//年龄//空参构造方法public User() {}//带全部参数的构造public User(String username, String password, String email, char gender, int age) {this.username = username;this.password = password;this.email = email;this.gender = gender;this.age = age;}//get和setpublic String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void eat(){System.out.println(username + "在吃饭");}}
测试类:
public class Test {public static void main(String[] args) {//写一个标准的javabean类//咱们在课后只要能把这个标准的javabean能自己写出来,那么就表示今天的知识点就ok了//利用空参构造创建对象User u1 = new User();//如果利用空参创建对象,还想赋值只能用set方法赋值u1.setUsername("zhangsan");u1.setPassword("1234qwer");u1.setEmail("pcb@qq.cn");u1.setGender('男');u1.setAge(23);//获取属性的值并打印System.out.println(u1.getUsername() + ", " + u1.getPassword()+ ", " + u1.getEmail() + ", " + u1.getGender() + ", " + u1.getAge());u1.eat();System.out.println("=============================");//简单的办法//利用带全部参数的构造来创建对象//快捷键:ctrl + pUser u2 = new User("lisi","12345678","pcb@qq.cn",'女',24);System.out.println(u2.getUsername() + ", " + u2.getPassword()+ ", " + u2.getEmail() + ", " + u2.getGender() + ", " + u2.getAge());u2.eat();}
}
相关文章:

学习JavaEE的日子 day12 构造方法 类的制作
Day12 需求:创建人类的对象,并操作对象 分析: 人类 - Person 属性:name、sex、age 方法:eat、sleep 场景:创建多个对象,去操作对象 //测试类:该类中有main方法,测试我们写…...

Mybatis-Plus基础学习
目录 第一章、快速了解mybatis-plus1.1)相关概念介绍1.2)为什么使用MyBatis-Plus1.3)学习过程中的疑问 第二章、 MyBatis-Plus与SpringBoot集成2.1)使用Spring Initializr创建SpringBoot项目2.2)安装Lombok插件2.3&…...

C#微信公众号HIS预约挂号系统源码
微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程,实时预约挂号、自费、医保结算,同时还可以查询检查检验报告等就诊信息,真正实现了让信息“多跑路”,让群众“少跑腿”。系统…...

MySQL基础笔记(6)函数
函数:是指一段可以直接被另一段程序调用的程序或者代码~(MySQL内置) 一.字符串函数 trim不能去除中间的空格~ select concat(jsl,1325): 执行如上的代码,返回字符串"jsl1325"。 select lower(JSL); 执行如上的代码&…...

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(2)
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...

Defi安全--Zunami Protocol攻击事件分析
其它相关内容可见个人主页 1 Zunami攻击事件相关信息 2023.8.13发生在Ethereum上发生的攻击,存在两个攻击交易,具体信息如下: 攻击合约地址:Contract Address 攻击合约 攻击者地址:Zunami Protocol Exploiter 攻击…...

虾皮电商 电商平台:虾皮(Shopee)东南亚领先的电子商务平台
在当今数字化时代,电子商务平台的兴起改变了人们的购物方式。虾皮(Shopee)作为东南亚地区领先的电子商务平台,为消费者提供了便捷、多样化的购物体验。由新加坡的Sea Group(前称Garena)于2015年创立&#x…...

【降龙算法】基于QT插件机制实现一个机器视觉算法小框架
机器视觉行业有各种各样的拖拉拽框架,也叫做低代码平台,例如国内海康的VisionMaster: 一个机器视觉框架需要包含各种算法模块,日志窗口,图像显示窗口等等,【降龙算法】就是做了一个入门级的机器视觉算法框…...

智能路由器 端口映射 (UPnP) Padavan内网端口映射配置方法
新版本Padavan 4.4内核的端口映射配置和老版本的不太一样,因为新版本默认是启用的 UPnP端口映射, 同时默认使用的是 IGD UPnP自动端口映射, UPnP名词解释: UPnP通用即插即用,是一组协议的统称,是一种基于TCP/IP、UDP和HTTP的分布式、开放体系ÿ…...

MR-GCN
∘ Φ \circ_Φ ∘Φ denotes a convolution Let b l o c k d i a g blockdiag blockdiag(A) be a n1n3-by-n2n3 block diagonal matrix, f o l d fold fold indicate its inverse operator diagonal degree tensor D \mathcal{D} D 作者未提供代码...
Java http 响应式请求和非响应式请求有什么区别
在Java中,HTTP的响应式请求和非响应式请求有以下区别: HTTP协议本身并不直接支持响应式请求,因为HTTP是基于请求-响应模型的。然而,可以通过使用其他技术和协议来实现响应式请求。 响应方式:响应式请求是指使用响应式编…...

CHS_06.2.1.6_2+线程的实现方式和多线程模型
CHS_06.2.1.6_2线程的实现方式和多线程模型 知识总览线程的实现方式用户级线程(User-Level Thread, ULT)内核级线程 多线程模型一对一模型多对一多对多模型 知识回顾 在上个小节中 我们学习了线程相关的一些基本概念 基础的知识 那这个小节中 我们回来看…...

k8s集群配置NodeLocal DNSCache
一、简介 当集群规模较大时,运行的服务非常多,服务之间的频繁进行大量域名解析,CoreDNS将会承受更大的压力,可能会导致如下影响: 延迟增加:有限的coredns服务在解析大量的域名时,会导致解析结果…...
Superpoint Transformer for 3D Scene Instance Segmentation
Abstract 现有的大多数方法通过扩展用于3D物体检测或3D语义分割的模型来实现3D实例分割。然而,这些非直接的方法存在两个缺点:1) 不精确的边界框或不令人满意的语义预测限制了整体3D实例分割框架的性能。2) 现有方法需要一个耗时的中间聚合步骤。为了解决这些问题,本文提出…...
adb调试软件下载 及 常用调试命令
一、软件下载 Windows版本:下载 Mac版本:下载 Linux版本:下载 二、常见调试命令 进入ADB调试 在文件路径栏输入cmd,回车,即可进入adb调试。注意:以下3条不要登录设备 shell (一)显…...

变电站综合自动化监控系统在某物流园35kV变电站中应用
摘 要:Acrel-1000变电站综合自动化系统,是我司根据电力系统自动化及无人值守的要求,总结国内外的研究和生产的先进经验,专门研制出的新一代电力监控系统。本系统具有保护、遥测、遥信、遥脉、遥调、遥控功能,可实现无人…...

技术的本质,是解决需求
分享下今日朋友圈精华内容。 很多人在初学时,走了很多弯路,一味追求热门、高性能、高复杂的芯片,或者系统,学了一堆东西,最后连个简单的功能,都实现不了。 大概是忘了,学技术的本质,…...

【刷题】leetcode 1 . 两数之和
两数之和 两数之和1 思路一 (简单突破)2 思路二 (进行优化)3 思路三 (哈希表 我还不会) 谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!! 两数…...

Sip - Ubuntu 配置 miniSIPServer 服务器(测试用)
客户提供的账号过期了,简单搭建 SIP 服务器,以便测试使用。个人认为这个配置起来最为简单,且测试功能足够。 官网miniSIPServer - 基于 Windows 以及 Linux 平台的 VoIP (SIP) 服务器软件. miniSIPServer 可能是最容易使用的 VoIP(SIP) 服务器…...
SpringCloud openFeign 之 获取被调用服务名
SpringCloud openFeign 之 获取被调用服务名 一. 概述 低版本 feign 只能获取到被调用方法的信息。 只有高版本 feign 才支持获取到被调用服务的信息。 二. 代码实现 package com.zxguan.springcloud2.template.user;import com.zxguan.springcloud2.template.user.config…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...