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.mzph.cn/news/206146.shtml

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

相关文章

文件同步及实现简单监控

1. 软件简介 rsync rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程 数据同步备份的优秀工具。在同步备份数据时,默认情况下,Rsync 通过其 独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文 件或…

1146-table performance-schema.session_variables don‘t exits打卡navicat连接MySQL报错

navicat连接MySQL时报错: 管理员权限打开cmd 输入下面代码: mysql_upgrade -u root -p --force输入密码 然后就可以正常连接了。 mysql_upgrade检查所有数据库中与mysql服务器当前版本不兼容的所有表。 mysql_upgrade也会升级系统表,以便你…

学习spring、springmvc、mybatis、ssm所有可能用到的依赖总结,父工程pom文件依赖,<packaging>pom</packaging>

1、父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/PO…

idea报错——Access denied for user ‘root‘@‘localhost‘ (using password: YES)

项目场景&#xff1a; 使用idea启动SpringBoot项目报错&#xff0c;可以根据提示看到是数据库的原因&#xff0c;显示使用了密码&#xff0c;具体报错信息如下&#xff1a; 解决方案&#xff1a; 第一步&#xff1a;先去配置文件里面查看连接MySQL的url是否正确&#xff0c;如果…

微前端 -- wujie 预加载和原理 无界传参

目录 wujie 预加载和原理 原理解析 MessageChannel 无界传参 1.全局变量 2.Props 3.event bus wujie 预加载和原理 提前把无界实例创建好 runPreload 赋值给sandbox.preload 预先加载好 startApp 判断是否有preload 需要从wujie的实例导出preloadApp,参数跟startApp 一…

frp内网穿透部署,轻松实现内网服务对外访问

FRP&#xff08;Fast Reverse Proxy&#xff09;是一种轻量级、高性能的反向代理工具&#xff0c;利用反向代理技术将公网请求转发至内网服务器上&#xff0c;并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时&#xff0c;FRP能够将公网与内网之间的隔离突破&#…

互联网Java工程师面试题·RabbitMQ篇

目录 1、什么是 rabbitmq 2、为什么要使用 rabbitmq 3、使用 rabbitmq 的场景 4、如何确保消息正确地发送至 RabbitMQ&#xff1f; 如何确保消息接收方消费了消息&#xff1f; 5、如何避免消息重复投递或重复消费&#xff1f; 6、消息基于什么传输&#xff1f; 7、消息如…

苹果mac电脑如何彻底删除卸载软件?

在苹果电脑上安装和使用软件非常容易&#xff0c;但是卸载软件却可能会变得复杂和困难。不像在Windows上&#xff0c;你不能简单地在控制面板中找到已安装的程序并卸载它们。因此&#xff0c;在这篇文章中&#xff0c;我们将讨论苹果电脑怎么彻底删除软件。 CleanMyMac X全新版…

el-tooltip (element-plus)修改长度

初始状态&#xff1a; 修改后&#xff1a; 就是添加 :teleported"false"&#xff0c;问题解决&#xff01;&#xff01;&#xff01; <el-tooltipeffect"dark"content"要求密码长度为9-30位&#xff0c;需包含大小写字母、数字两种或以上与特殊字…

AtCoder ABC周赛2023 11/4 (Sat) D题题解

目录 原题截图&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注意事项&#xff08;很多人再这个地方掉坑&#xff09;&#xff1a; 代码&#xff1a; 原题截图&#xff1a; 题目大意&#xff1a; 给你两个数组&#xff08;A和B)长度都为n&#xff0c;然你求出一…

【Spring 源码】 贯穿 Bean 生命周期的核心类之 AbstractAutowireCapableBeanFactory

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

『 C++ 』BinarySearchTree搜索二叉树

文章目录 前言 &#x1f995;二叉搜索树的概念 &#x1f995;搜索二叉树的初始化 &#x1f995;Insert( )插入函数 &#x1f995;&#x1f47e; InsertR( ) 插入函数(递归) InOrder( ) 中序遍历打印 &#x1f995;Find( ) 查找函数 &#x1f995;&#x1f47e; Find( ) 查找函数…

C++新经典模板与泛型编程:用成员函数重载实现is_base_of

用成员函数重载实现is_base_of std::is_base_of是一个C 11标准中用于判断某个类是否是另一个类父类的类模板。 #include "killCmake.h"#include<string>using namespace std;class A { };class B : public A { public:B(int x): x_(x){} private:int x_; };/…

使用 GROUP BY 进行数据库分析:以图书销售数据库为例

让我们通过一个简单但实用的例子来理解 GROUP BY 的使用。我们将以一个图书销售数据库为例。这个数据库包含两张表&#xff1a;一张是图书信息表 (books)&#xff0c;另一张是销售记录表 (sales)。我们会先创建这两张表&#xff0c;然后插入一些数据&#xff0c;并展示如何使用…

PHP对接企业微信

前言 最近在做项目中&#xff0c;要求在后台管理中有企业微信管理的相关功能。相关准备工作&#xff0c;需要准备好企业微信账号&#xff0c;添加自建应用&#xff0c;获得相应功能的权限&#xff0c;以及agentid、secre等。 参考文档&#xff1a; 企业微信开发文档 功能实现 因…

2、Redis变慢原因排查(下)

感觉Redis变慢了&#xff0c;这些可能的原因你查了没 &#xff1f;(下) Redis变慢排查的上一篇【感觉Redis变慢了&#xff0c;这些可能的原因你查了没 &#xff1f;(上)】&#xff0c;我们是基于Redis命令为入口&#xff0c;比如命令使用不得当&#xff0c;bigkey问题&#xf…

开发短视频矩阵实时直播需要用到哪些技术?

现在越来越多的人或公司都想开发出自己的直播网站或者直播APP&#xff0c;但是在技术这一块又不知道怎么下手&#xff0c;那么我就给大家讲一下在视频直播系统开发中要了解那些知识和技术&#xff1a; 在开发上需要用的技术有&#xff1a; 摄像头采集 音视频编解码 流媒体协议…

⭐Unity 搭建UDP客户端(01) 配合网络调试助手测试

1.接收来自服务器的消息 using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine;public class UDPManager:MonoBehaviour {public string recvStr; //服务器返回值public string UDPClientAddRess "192.168.2.39&q…

数字人对话系统 Linly-Talker

&#x1f525;&#x1f525;&#x1f525;数字人对话系统 Linly-Talker&#x1f525;&#x1f525;&#x1f525; English 简体中文 欢迎大家star我的仓库 https://github.com/Kedreamix/Linly-Talker 2023.12 更新 &#x1f4c6; 用户可以上传任意图片进行对话 介绍 Lin…

SolidWorks Simulation 有限元分析-升降架分析

问题描述&#xff1a;一个载重为 1800N 的升降架承受一外部水压柱筒的作用&#xff0c;该水压柱筒与基座上的滑块相连。 1. 打开零件。 2. 我们新建一个静应力分析的算例&#xff0c;如下图所示。 3. 设置材料。我们需要为模型指定模型的材料属性。点击选中模型&#xff0c;鼠…