学习JavaEE的日子 day12 构造方法 类的制作

news2024/11/20 6:20:07

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();
    }
}

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

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

相关文章

进程切换和是Linux2.6内核中进程调度的算法

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 进程切换 进程并发就需要做到进程切换,一个CPU一套寄存器但是需要运行的进程有很多…

KT148A语音芯片智能锁扩展语音地址以及如何支持大量小文件的打包

一、语音芯片应用于智能锁的需求 智能锁的语音播放需求中,有很多需要多国语言合并在一起的需求 其中语音文件数多,并且每个语音文件小的特点 如果使用OTP的语音芯片,就很麻烦,因为用户不可烧录,调试也很繁琐 同时大…

μ综合设计控制器

μ综合设计控制器是一种基于μ分析的控制器设计方法,用于提高控制器的鲁棒性和性能。μ分析是一种数学工具,用于描述和比较控制系统在不同参数变化下的性能。通过μ综合设计,可以综合运用各种控制策略,以达到更好的控制效果。 μ…

pycharm debug显示的变量过多

问题: https://blog.csdn.net/Hodors/article/details/117535731 解决方法: 把"Show console variables by default"前面的勾取消掉就行 参考: https://stackoverflow.com/questions/48969556/hide-console-variables-in-pychar…

C语言--质数算法和最大公约数算法

文章目录 1.在C语言中,判断质数的常见算法有以下几种:1.1.试除法(暴力算法):1.2.优化试除法:1.3.埃拉托色尼筛法:1.4.米勒-拉宾素性检验:1.5.线性筛法:1.6.费马小定理&am…

k8s---配置资源管理

目录 配置资源管理的方式 secret pod如何来引用secret??? 陈述式创建: 声明式创建 Secret创建加密文件 使用token挂载 环境变量使用 docker-registry ConfigMap 陈述式 热更新 总结: 配置资源管理的方式 …

OJAC近屿智能带你解读:AIGC必备知识之Lang Chain

Look!👀我们的大模型商业化落地产品📖更多AI资讯请👉🏾关注Free三天集训营助教在线为您火热答疑👩🏼‍🏫 Lang Chain, 是一种先进的语言模型链技术,旨在通过串联多个专业…

js逆向第21例:猿人学第20题新年挑战

文章目录 一、前言二、定位加密参数1、定位wasm加密2、反编译wasm3、定位sign加密三、代码实现四、参考文献一、前言 新春福利:抓取这5页的数字,计算加和并提交结果 二、定位加密参数 通过get请求地址可以看到需要搞定参数有page、sign、t如下图: 进入堆栈不难发现这样一…

互联网加竞赛 基于机器视觉的12306验证码识别

文章目录 0 简介1 数据收集2 识别过程3 网络构建4 数据读取5 模型训练6 加入Dropout层7 数据增强8 迁移学习9 结果9 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的12306验证码识别 该项目较为新颖,适合作为竞赛课题方向…

驾驭车联网的力量:深入车联网网络架构

车联网,作为移动互联网之后的新风口,以网联思想重新定义汽车,将其从简单的出行工具演化为个人的第二空间。车联网涵盖智能座舱和自动驾驶两大方向,构建在网联基础上,犀思云多年深度赋能汽车行业,本文将从车…

极端恶劣天气数据集-

极端恶劣天气数据集是一个包含了各种极端天气事件的统计信息的数据集。这些事件包括暴雨、暴雪、台风、龙卷风等极端天气现象。该数据集提供了有关这些极端天气事件的时间、地点、持续时间、强度等详细信息。 这个数据集对于研究和分析极端天气现象的频率、趋势和影响具有重要…

基于K-Means聚类与RFM模型分析顾客消费情况【500010102】

项目说明 本数据集是生成式模拟数据,本项目通过可视化分析对数据进行初步探索,再通过时间序列针对店铺的销售额进行分析,对时序图进行分解,发现数据存在季节性,并且通过auto_arima自动选择参数建立了SARIMA模型&#…

【Leetcode 程序员面试金典 02.08】 —— 环路检测 |双指针

面试题02.08. 环路检测 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回null。 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的…

【不用找素材】ECS 游戏Demo制作教程(1) 1.15

一、项目设置 版本:2022.2.0f1 (版本太低的话会安装不了ECS插件) 模板选择3D URP 进来后移除URP(因为并不是真的需要,但也不是完全不需要) Name: com.unity.entities.graphics Version: 1.0.0-exp.8 点击…

59.说一下 spring 的事务隔离?

spring 的事务隔离有什么作用? 用来解决并发事务所产生一些问题,并发会产生什么问题? 1.脏读2.不可重复度3.幻影读事务隔离的概念 通过设置隔离级别可解决在并发过程中产生的那些问题分别举例说明 1.脏读 上述图表示:一个事务,读取了另一个事务中没有提交的数据,会在…

AI对决:ChatGPT与文心一言的深度比较

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言ChatGPT与文心一言的比较Chatgpt的看法文心一言的看法Copilot的观点chatgpt4.0的回答 模型的自我评价自我评价 ChatGPT的优势在这里插入图片描述 文…

NXP-RT1176开发(一)——环境搭建(MCUXpressoIDE/VSCode)

目录 1. 安装IDE 1.1 官方开发的IDE软件 1.2 Config工具下载 1.3 说明(需先有SDK) 2. 下载SDK 3. VScode环境下编译 3.1 安装插件 3.2 确保本地有交叉编译工具链和CMAKE 3.3 加载本地SDK 3.4 导入例程编译 1. 安装IDE 该处理器编译规则可以MDK…

动手搓一个kubernetes管理平台(2)-后端权限设计

授权和认证 1. 权限分类 由于用户需要操作kubernetes,所以权限分类起码需要2套,即平台的权限和集群的权限管理,前者用于管理平台,如用户的添加,报表的查看,日志的审计等等,后者用于集群管理&a…

Vue3+ElementPlus实例_select选择器(不连续搜索)

1.开发需求 在各大UI框架的select选择器中,在搜索时都是输入连续的搜索内容,比如“app-store”选项,你要输入“app-xxx”,才能匹配这个选择,要是想输入“a-s”这种不连续的匹配方式,就实现不了&#xff0c…