Java se之类和对象

目录

  • 类的定义格式
  • 如何去自定义
  • this的引用
  • 如何初始化对象
  • 构造方法的定义和使用

类的定义格式

class ClassName{
//属性(成员变量)
//行为(成员方法)
}

1>变量与方法
1.成员变量:普通成员变量
静态成员变量
2.成员方法:普通成员方法
静态成员方法
其中的静态变量与方法,在后面的封装里面讲述

注意点
1>不建议一个Java文件里面创建多个类,建议是创建一个类放在一个Java文件里面
2>main方法所有的类一般要使用public修饰
3>public修饰的类必须和文件名相同
4>不要轻易去修改public修饰的类的名称,如果要修改就用工具来(在idea里面,就是先选中名字然后右键,点击refactor,再点击rename就可以改名,但是这个是只针对java只有一个类的时候)

如何去自定义

class PetDog{//这里就是属性public String name;public String color;//这下面是方法,也叫行为public void barks(){System.out.println(name + "旺旺~~~~");}public void wag(){System.out.println(name + "摇尾巴~~~");}}
public class Test {public static void main(String[] args) {PetDog petDog = new PetDog();petDog.name = "小黄";petDog.color = "黄色";System.out.println(petDog.name);petDog.barks();petDog.wag();}
}

在这里面的话,我们在上面创建了一个类,我们去使用这个类的时候,我们是要去通过new实例化一个对象, 就是 PetDog petDog = new PetDog();这个, 我们在实例化的时候不止可以实例化一个,可以实例化无数个对象
然后里面的petDog.name = “小黄”;和 petDog.color = “黄色”;,就是我们在给我们实例化的对象附一个值,取名为小黄,颜色为黄色,
在后面的petDog.barks();和petDog.wag();这两个里面,因为我们那前面的时候就给名字和颜色进行初始化了,所以我们直接引用这两个方法就可以了,里面的name已经被赋值为小黄了
在这里插入图片描述
最后的运行结果就是这样的
注意
1>new关键字是用于创建一个对象的实例
2>使用 . 来访问对象中的属性和方法
3>同一个类可以创建多个实例

this的引用

public class Date {public int year;public int month;public int day;public void setDate(Date this, int y,int m,int d){this.year = y;this.month = m;this.day = d;}public static void main(String[] args) {Date date = new Date();date.setDate(1999,1,1);Date date1 = new Date();date1.setDate(1899,1,1);}}

this的特征:
1>this的类型对应类 类型引用,即哪个对象调用就是哪个对象引用类型
2>在成员方法中,this只能引用当前对象,不能再引用其他对象
3>在一个成员方法中,可以用this来调用另一个成员方法

只有一个方法,如何知道给哪个对象赋值??
答:通过Date this以及this.year= y这几个来进行判断给谁赋值

如何初始化对象

1>就地初始化
定义成员变量的时候,就直接初始化

2>构造方法:
注意点:
1.无返回值
2.方法名必须和类名相同
3.在整个对象的生命周期内,只调用一次(只有在对象实例化的时候才会调用)

class Student{public String name;public int age;public Student(){this.name = "张三";this.age = 9;}
}

像图中的public Student(){ }.就是一个构造方法,

实例化对象的关键两步?
1>为对象分配内存
2>调用合适的构造方法
注意这个合适!!!
因为我们在代码中,只写了成员变量,没有写任何一个构造方法的时候,java中会自动提供一个不带参数的构造方法,若是有存在构造方法,编译器就不会提供(总结就是救急不救穷);

作用:
对,对象中的成员进行初始化,并不负责开辟空间

构造方法的定义和使用

public Student(){this.name = "张三";this.age = 9;System.out.println("student().....");}public Student(String name,int age){this.name = name;this.age = age;System.out.println("Student(String,int).......");}

上图这种,就存在两个构造方法
注意:
1>构造方法可以有多个,且构成重载关系
2> 当上面这两种情况都存在的时候,可以通过传参的方式来进行初始化

Student student = new Student("悟空",19);

或者如果使用idea的话,可以先右键,再Generate,然后constructor快捷生成构造方法

构造方法中,可以通过this来调用其他的构造方法来简化代码
例如

class Student{public String name;public int age;public Student(){this("张三",9);}public Student(String name,int age){this.name = name;this.age = age;}
}
public class Test {public static void main(String[] args) {Student student = new Student();System.out.println(student.name);System.out.println(student.age);}
}

在这里插入图片描述
可以像上面的代码一样,通过this来直接调用
但是1>只能出现在构造方法中
2>不能自己调用自己
3>只能出现在当前构造方法的第一行,如果有其他东西就会报错

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts折线图的数据显示

一、 echarts让折线图的每个折点都显示y轴的数值 效果如下 // 在 series中添加 itemStyle : { normal: {label : {show: true}}}series: [{name: 买入汇率,data: BuyRate,type: line,itemStyle : { normal: {label : {show: true}}}},{name: 卖出汇率,data: SaleRate,type: lin…

基于个人微信进行二次开发

请求URL: http://域名地址/sendVoice 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId是string登录实例标识wcId是string接…

机器学习实战:预测波士顿房价

前言: Hello大家好,我是Dream。 今天来学习一下机器学习中一个非常经典的案例:预测波士顿房价,在此过程中也会补充很多重要的知识点,欢迎大家一起前来探讨学习~ 一、导入数据 在这个项目中,我们利用马萨诸…

Numpy数组的数据类型汇总 (第4讲)

Numpy数组的数据类型 (第4讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

如何使用玻璃材质制作3D钻石模型

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

JAVA定时任务技术总结

在日常的项目开发中,多多少少都会涉及到一些定时任务的需求。例如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表,定时去扫描某个表的异常信息(最终一致性的方案也可能涉及&a…

使用 KubeRay 和 Kueue 在 Kubernetes 中托管 Ray 工作负载

在 KubeCon CN 2023 的「 Open AI 数据 | Open AI Data」专题中,火山引擎软件工程师胡元哲分享了《使用 KubeRay 和 Kueue 在 Kubernetes 中托管 Ray 工作负载|Sailing Ray workloads with KubeRay and Kueue in Kubernetes议题。以下是本次演讲的文字…

信息化,数字化,智能化三者是同一概念么?

引言 在当今科技和商业领域,信息化、数字化和智能化是三个极为关键的概念。信息化强调信息的获取、传递和应用,数字化则是将物理实体转化为数字形式,而智能化则赋予系统更高级的智能和自主性。这些概念的交汇与融合塑造着我们的现实&#xf…

docker:部署java Springboot项目

文章目录 1、打 jar 包1、创建Dockerfile3、创建镜像4、启动容器其他注意事项docker中jdk的版本命名举例:openjdk:11-ea-17-jre-slim举例:8u312-jre-nanoserver-1809 通过find找文件 1、打 jar 包 将项目打一个 jar 包,可以使用 IDEA 1、…

使用VBA快速统计词组(单词组合)词频

实例需求:产品清单如A列所示,现在如下统计词组词频。想必各位小伙伴都指定如何使用字典对象实现去重,进而实现单个单词的词频统计。 但是统计词组词频就没有那么简单了,为了便于演示,此处的词组只限于两个单词的组合。…

Excel 表列序号

题目链接 Excel 表列序号 题目描述 注意点 columnTitle 仅由大写英文组成1 < columnTitle.length < 7 解答思路 对于"CAB"&#xff0c;计算其序列号的思路&#xff1a;字母B的贡献值为2&#xff0c;字母A的贡献值为1 * 26&#xff0c;字母C的贡献值为3 * …

HarmonyOS学习 第1节 DevEco Studio配置

俗话说的好&#xff0c;工欲善其事,必先利其器。我们先下载官方的开发工具DevEco Studio. 下载完成后&#xff0c;进行安装。 双击DevEco Studio&#xff0c;点击Next按照指引完成安装 重新启动DevEco&#xff0c;点击 Agree 进入环境配置&#xff0c;安装Node.js和ohpm 点击Ne…