学习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和set

     public 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 + p
        User u2 = new User("lisi","12345678","pcb@qq.cn",'女',24);
        System.out.println(u2.getUsername() + ", " + u2.getPassword()
                + ", " + u2.getEmail() + ", " + u2.getGender() + ", " + u2.getAge());
        u2.eat();
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis配置动态数据源以及参数传递等

Mybatis必知必会 一、Mybatis动态加载数据源 在配置数据源连接时,在企业的真实开发中数据源一般都会写在配置文件中,而不会直接写在mybatis的核心配置文件中 所以,Mybatis为了方便开发人员去动态的获取数据源连接制定了一些特定的标签用于加载这些数据源。 具体做法…

【leetcode刷题】模拟专题

模拟 一、替换所有的问号1、题目链接2、解析3、代码 二、提莫攻击1、题目链接2、解析3、代码 三、Z字形变换1、题目链接2、解析3、代码 四、外观数列1、题目链接2、解析3、代码 五、数青蛙1、题目链接2、解析3、代码 一、替换所有的问号 1、题目链接 leetcode链接 2、解析 3、…

2024年人才缺口大,学网络安全找不到工作?原因竟然在这!

为什么网络安全人才缺口那么大,但很多人还是找不到工作?其实大家都忽略了1个重点,那就是不清楚企业在招什么样的人。 我花了2天的时间统计了主流招聘网站的岗位信息,发现了一个惊人的真相,那就是企业都喜欢招这3种人&…

深度学习笔记(四)——使用TF2构建基础网络的常用函数+简单ML分类实现

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 TF2基础常用函数 1、张量处理类 强制数据类型转换: a1 tf.constant([1,2,3], dtypetf.floa…

Android APP开发集成微信登陆流程(手把手新手版)

本文比较适合新手玩家,老玩家就不要看了 昨天整了下微信登陆,乍一看官方文档还有点难懂!遂自己整理了下流程,给大家参考参考。 官方文档链接:准备工作 | 微信开放文档微信开发者平台文档https://developers.weixin.q…

智能代码:生成式 AI 在软件开发中的革命性角色

想象一下,在智能手机革命性地改变了我们的生活之后,现在轮到了生成式 AI 在软件开发领域掀起风暴。你知道吗,如果代码能自己编写自己,这将是多么惊人的一步?这就好比我们现在能轻松地用手机应用管理日常生活一样&#…

AI大模型预先学习笔记三:使用Assistants API快速搭建领域专属AI助手

文章目录 一、什么是AssistantsAPI二、为什么用AssistantsAPI三、Demo展示及能力介绍四、Demo框架及具体实现五、从Demo到实际应用的Gap 一、什么是AssistantsAPI 介绍 OpenAI的第一手发布者API文档,也就是相当于GPT的API 二、为什么用AssistantsAPI 优点 够全、…

vue 渲染数组,拖拽排序,渲染同一个数组拖拽排序不影响其他选中行状态

当我们能够设置单行状态改变的时候,那么肯定可以拿到选中的当前行的id或者下标index。 只要设定一个初始化值在拖拽开始的时候重新赋值,然后再处理选中状态的时候进行判断即可。 前期写的时候没有注意到这个问题,可以看这个文章。 在复测的时…

解析HTTP响应的JSON数据

解析HTTP响应的JSON数据是许多Web开发任务中的常见需求。在Go语言中,可以使用标准库中的encoding/json包来轻松解析JSON数据。下面我将详细介绍如何解析HTTP响应的JSON数据。 首先,确保你已经发送了一个HTTP请求并获取到了响应。然后,你可以…

变电站综合自动化监控系统在某物流园35kV变电站中应用

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

博途PLC增量式PID和脉冲轴组合控制阀门开度(算法介绍)

这篇博客我们以S7-1200PLC平台来举例,介绍我们的PID闭环控制器如何控制脉冲轴实现阀门角度控制。SMART PLC PID控制器控制伺服驱动器实现关节角度控制详细内容请参考下面文章: https://rxxw-control.blog.csdn.net/article/details/129658364https://rxxw-control.blog.csdn…

HNU-计算机网络-实验5(自选)-安全相关编程实验

计算机网络 课程综合实验安全相关编程实验(RUST) 计科210X 甘晴void 202108010XXX 【前言】 这个《课程综合实验》是21级开始新加的实验,之前都没有。具体的可以看实验指导书,是用的19级同学的毕设。我完成的这个实验需要一点点R…

新手小白如何正确做抖音小店无货源?这六个步骤,新手建议收藏!

大家好,我是电商花花。 新手想要做好抖音小店,就要有一个正确的做店方法,很多新手小白在做店的时候踩坑,或者做是不起来,然后开通后没啥订单销量。 下面我就把正确的抖音小店做店方法详细的流程分享出来,…

UniApp+Vue智慧工地信息化管理云平台源码(支持多工地使用)

智慧工地建设的意义 1、提高工程效率 智慧工地可以通过数字化手段,将工地的各个方面进行数字化存储和管理,从而实现的实时监测和共享。这可以大大提高工程的效率,减少工程中的人工干预,并且可以为后续的工程维护和升级提供便利。…

1月16日代码随想录最大二叉树

654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构…

【分布式技术】监控平台zabbix对接grafana,优化dashboard

目录 第一步:在zabbix server服务端安装grafana,并启动 第二步: 访问http://ip:3000/login 第三步:创建数据源 第四步:导入dashboard模板 ps:自定义创建新面板 第一步:在zabbix server服务…

【Rust】get_local_info 0.2.4发布

发布0.2.4,修正0.2.3([我的Rust库更新]get_local_info 0.2.3-CSDN博客)中存在的峰值算法bug,现已提交力扣并通过,耗时0ms

数仓建模理论与规范

一、 模型架构设计目标 数据仓库的定义 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合&am…

❤ Uniapp使用一(文档和 API 篇)

❤ Uniapp使用一(文档和 API 篇) 一、介绍 uni-app官网:https://uniapp.dcloud.io/api/media/image?idpreviewimage 微信小程序官网:https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html …

AI嵌入式K210项目(4)-FPIOA

文章目录 前言一、FPIOA是什么?二、FPIOA代码分析总结 前言 磨刀不误砍柴工,在正式开始学习之前,我们先来了解下K210自带的FPIOA,这个概念可能与我们之前学习STM32有很多不同,STM32每个引脚都有特定的功能&#xff0c…