Java类和对象、自定义包、static、代码块、方法重写
目录
1.类和对象
2.this指针
3.对象的构造和初始化
3.1默认初始化
3.2就地初始化
3.3构造初始化
3.4IDEA快速填充
3.5使用this简化
3.6初始化的总结
4.包的引入
4.1包的概念
4.2导入包中的类
4.3自定义包
5.static修饰
6.代码块的划分
7.方法重写
1.类和对象
使用对象的引用加上点号就可以对于这个属性进行访问;
我们首先是需要定义一个类,这个对象实际上就是类的实例化,我们可以把这个类理解为我们的建筑图纸,对象就是依据这个图纸建设出来的高楼大厦,对于这个类里面的成员变量和成员函数,我们的这个实例化的对象里面都是有的;就如同我们的这个图纸里面有的内容,我们的这个高楼大厦里面也是包含的,因为我们的这个高楼大厦就是依据这个图纸建设的啊;
我们对象加上点就表示这个对象的这个属性值,new就是进行类的实例化的过程,一个类是可以实例化多个对象的,每一个对象,包含相同的属性和方法;
2.this指针
我们的这个this指针是怎么引出来的呢,就是我们的这个形参的名字和我们的成员变量的名字是一样的时候,我们的this指针就指向当前的这个对象,我们的下面的这个是一个日期的类;
this.yaer表示的就是这个对象的year成员变量,year就是这个里面的传递过来的形参,这个就可以区分我们的形参和成员变量;
当然,如果我们的形参和成员变量的名字不一样的时候,我们这个时候是很容易进行区分的,因此这个时候我们就可以不写这个this指针,而且实际情况下,我们大部分情况下都不会写这个this指针,因为一般我们的形参和成员变量不会一样,当然即使是我们不写,这个this指针也是存在的;
3.对象的构造和初始化
3.1默认初始化
这个就是直接来一个和我们的类名字一样的函数,就是构造函数,这个可以显示的写出来,也可以不写,但是即使我们不写出来,创建对象的时候这个构造函数也是会被调用的;
这个时候我们的int就会被默认初始化为0,bollean类型的数据会被默认初始化为false,这个都是默认的操作,如果我们不进行任何的干预;
3.2就地初始化
就是我们在创建对象的时候进行初始化,这个就是创建对象的同时进行初始化,我们把这个叫做就地初始化;
3.3构造初始化
构造的时候赋值,这个相当于C++里面的这个自定义构造函数,本质都是一样的;
这个和上面的区别就是我们的就地初始化就是在定义成员变量的时候进行初始化,构造初始化是在写构造函数的时候进行初始化;
3.4IDEA快速填充
按照下面的这个步骤,我们就可以快速的构建出来带参数的构造函数,最后一不会让我们选择这个函数有几个参数:我们可以选一个,也可以选多个,因为这个构造函数也是函数,也是支持这个重载的;
3.5使用this简化
这个的意思:我们的下面是有一个无参数的构造函数和一个有三个参数的构造函数,这个时候,我们在这个无参的构造函数里面,就可以使用这个this(1900,1,1)相当于就是去调用这个有参的构造函数进行初始化;
这个前提是我们的这个无参的构造函数里面如果是有多行代码,我们的这个thsi的这一行必须写在第一行,否则就会报错;
第二个就是我们的有参函数和无参函数不可以成环,就是本来我已经调用你了,然后你又调用我,这个就是成环,这个也是不被允许的;
下面的这个代码就是对于上面的这个进行进一步说明,两个函数的调用形成了递归调用,这个时候就会报错;
3.6初始化的总结
其实上面的这个什么默认初始化。就地初始化都是分出来的,其实没有必要搞得这么多的类型,我们就只需要知道这个默认的构造函数,以及我们可以写参数的自定义构造函数;
因为学习过这个C++里面的这个类和对象,因此这个里面并不难理解,因为两个的核心思想就是一样的,我们只需要进行迁移即可;
4.包的引入
4.1包的概念
包的全称叫做软件包,是为了让我们程序猿更好的对于创建的类进行管理;
包的这个机制很好的体现了我们的类和对象的封装性,我们可以通过这个包实现对于类和接口的组织和管理;
4.2导入包中的类
下面的是两个导入包里面的类的方法,但是第一种会更加繁琐一些,第二个更加简单一些:
第一个就是上面的这个样子的,我们直接指出来我们要导入的类属于哪个包里面。上面导入的这个Date这个类就是属于我们的java.util这个包里面,但是这样写比较繁琐,因为我们每一次使用都要把前面的这个包的名字写一遍,因此我们可以使用下面的这个import写法:
下面的这个import就是我们在第一行直接指出来这个类属于那个包,这样再类里面我们就可以直接使用了;
如果想要导入这个java.util的其他的类,这个时候我们就可以使用*这个方法:
这个*实际上就是一个通配符,这个通配符表示的是所有,例如我们之前学习这个sql语句的时候从这个表里面选择所有的内容,这个时候就是select * from之类的这个语句,在我们学习这个linux的时候,想要从一个很大的文件系统里面对于这个文件里面进行筛选,这个时候使用*.txt表示的就是所有的以txt结尾的文件,这个也是相同的用法;熟悉git的朋友可能就更清楚了,这个git里面有一个gitignore文件,这个文件里面内容就是用来,对于我们上传的文件进行筛选的,这个文件我们可以修改的,例如这个.mlx文件就是一类文件,这类文件就会在上传的时候被过滤掉;
虽然这个*可以省去很多的问题,但是我们还是建议直接指定,下面的这个就是使用*出现的一个问题(两个类的名字冲突,该如何进行选择)
上面的这个编译报错就是因为我们的这个两个包里面都是有这个date这个类的,因此在进行导入的时候,他就不知道我们程序猿到底想要导入哪一个类,因此这个就会出现报错的情况,我们如果想要解决这个报错,我们就可以使用这个具体的:就是进行import之后,我们用到的时候进行具体的指定,这个就不会报错(如下图所示)
4.3自定义包
我上面创建的这个包是分层显示的,就是类似于一个树状的结构。但是最开始这个系统默认的这个设置可能就不是这个样子的,因为我们的这个自定义包实际上会在这个我们的电脑的这个文件夹里面进行创建,我们点击这个package之后,我们就写这个com.baidu.www,实际上这个就是一个文件之间的包含的关系,就是这个com文件夹里面有一个baidu的文件夹,baidu文件夹里面有一个www文件夹;
如果使用这个默认的IDEA设置,这个里面的com,baidu,www的层架结构可能就不会显示出来,我们可以按照下面的这个步骤把对应的这个勾选取消掉,就是这个compact middle packages这个,他的这个原来的是勾选上的,我们把这个取消掉,这个时候我们的com,baidu,www就是像树状一样进行显示的;
如果想要查看这个具体的文件层级结构,我们可以按照下面的这个方式进行查看,这样我们就可以真正的在自己的这个电脑的文件夹里面看到我们呢的自定义的包包;
包的层级结构:我们需要知道这个包的层结结构,即使是我们的自定义的包,这个也是有自己的层级结构的,像下面的这个www就是和test3,test4同属以一个级别的,就是这三个都是属于baidu这个包里面的,但是我们的这个test,test2就是属于com.baidu.www这个包里面的,因此,他们的这个范围是不一样的;
下面的这个string brand这个没有任何的权限设置,但是这个属于我们的test包,因此这个可以在自己的这个类里面进行访问,像这个test3,test4都是无法进行访问的,这个就是包的访问权限(在自己的这个包里面的类可以访问,其他的不可以访问,不同的包里面的类的名字可以不一样,这个就是C++里面的这个命名空间,两个就是一个意思,本质没有差别)
我们可以使用下面的方式验证上面的结论:我们在baidu这个目录下面建立一个test类,这个时候不会报错,但是我们在这个www下面去建立一个类,这个时候就会报错,这个就是包的作用域的限制导致的,不同的包里面的这个类的名字可以一样,但是一个包里面的名字不可以是一样的;
5.static修饰
这个其实不难理解:
static修饰成员变量:这个成员变量属于类域的,不是某一个对象的,而是创建类的时候就存在了,这个成员变量就是共有的;
static修饰成员方法:这个成员方法也是属于这个类的,不依赖于任何一个对象而存在;
static修饰的静态成员方法里面不可以使用我们的非静态成员变量;
也不可以使用我们的非静态的成员方法(因为非静态方法有this指针,但是我们的static修饰的方法没有this指针)
6.代码块的划分
下面的这个就是一个普通的代码块:
下面的这个是另外的两个类型:实例化代码块和静态代码块,其中两个的区别就是静态的代码块的前面加上我们的关键字static;
实例化代码块只有在我们创建对象的时候才会被执行,静态代码块:无论我们创建多少个对象,我们的这个静态的代码块只会被执行一次,如果一个类里面有多个静态的代码块,这个时候就会按照这个先后顺序依次执行;
7.方法重写
就是我们自己创建一个对象,我们想要打印这个对象的相关的属性内容,这个时候就可以使用一下对于方法的重写;
下面的这个就是我们的类的相关的信息:
接着我们调用自定义构造函数:创建一个对象,想要打印这个对象;
下面的这个是一个调用的过程(这个和我们上面使用的案例不一样,但是这个调用的过程是一样的,因此这个时候,我们可以看到这个最后是走到了这个toString这个位置,但是打印的结果却是一个类的全路径名+@+一个地址,我们想要的是这个相关的属性,这个时候,我们就可以进行方法的重写,重写的方法就是我们的toString方法)
我们可以通过下面的方式进行重写,这个不需要我们自己写:
下面的这个操作是在我们的类的文件进行的;首先右键,找到generate,然后选择这个toString这个方法,然后把这个里面所有的成员变量全部勾选(这个第三个步骤可能会不一样,因为这个具体取决于我们的成员变量的数量);
然后我们就可以看到我们的这个tostring方法已经被重写了,这个已经写在我们的这个类里面去,这个时候我们再次执行,这个就会调用我们重写的这个方法,override表示的就是这个方法是被重写的,打印结果就是相关的这个对象的属性信息;
相关文章:
Java类和对象、自定义包、static、代码块、方法重写
目录 1.类和对象 2.this指针 3.对象的构造和初始化 3.1默认初始化 3.2就地初始化 3.3构造初始化 3.4IDEA快速填充 3.5使用this简化 3.6初始化的总结 4.包的引入 4.1包的概念 4.2导入包中的类 4.3自定义包 5.static修饰 6.代码块的划分 7.方法重写 1.类和对象 使…...
【系统代码】招投标采购一体化管理系统,JAVA+vue
前言: 随着互联网和数字技术的不断发展,企业采购管理逐渐走向数字化和智能化。数字化采购平台作为企业采购管理的新模式,能够提高采购效率、降低采购成本、优化供应商合作效率,已成为企业实现效益提升的关键手段。系统获取在文末…...
基于yolov8深度学习的120种犬类检测与识别系统python源码+onnx模型+评估指标曲线+精美GUI界面目标检测狗类检测犬类识别系统
【算法介绍】 基于YOLOv8深度学习的120种犬类检测与识别系统是一款功能强大的工具,该系统利用YOLOv8深度学习框架,通过21583张图片的训练,实现了对120种犬类的精准检测与识别。 该系统基于Python与PyQt5开发,具有简洁的UI界面&a…...
UNI-APP_iOS开发技巧之:跳转到TestFlight或者App Store
有的时候我们的应用可能需要上TestFlight或者App Store,更新升级就需要跳到TestFlight里面。方法如下: 跳转到TestFlight: itms-beta://itunes.apple.com/app/你的AppID 跳转到AppStore: itms-apps://itunes.apple.com/app/你的AppIDhttps://airp…...
基于SSM+Vue技术的定制式音乐资讯平台
文未可获取一份本项目的java源码和数据库参考。 一、选题的背景与意义: 随着个人计算机的普及和互联网技术的日渐成熟,网络正逐渐成为人们获取信息及消费的主要渠道。然而在当前这个信息时代,网络中的信息种类和数量呈现爆炸性增长的趋势&a…...
Spring依赖注入和注解驱动详解和案例示范
在 Spring 框架中,依赖注入(Dependency Injection, DI)和注解驱动(Annotation-Driven)是其核心机制,它们为 Spring 应用提供了灵活性和可扩展性。依赖注入简化了对象间的依赖管理,而注解驱动则通…...
网络通信——OSPF协议(基础篇)
这里基础是因为没有讲解OSPF中的具体算法过程,以及其中很多小细节。后续会更新。 目录 一.OSPF的基础信息 二.认识OSPF中的Router ID 三.OSPF中的三张表 四.OSPF中的度量方法(计算开销值) 五. OSPF选举DR和BDR(就是这个区域…...
Kubernetes从零到精通(15-安全)
目录 一、Kubernetes API访问控制 1.传输安全(Transport Security) 2.认证(Authentication) 2.1 认证方式 2.2 ServiceAccount和普通用户的区别 2.3 ServiceAccount管理方式 自动ServiceAccount示例 手动ServiceAccount示例 3.鉴权 (Authorization) 3.1鉴权方式 3.2 …...
《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版
推荐:《算法竞赛》,算法竞赛大全书,网购:京东 天猫 当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …...
Soar项目中添加一条新的SQL审核规则示例
soar是一个开源的SQL规则审核工具,是一个go语言项目,可以直接编译构建成一个可执行程序,而且是一个命令行工具,我们可以利用archey来调用soar进行sql规则审核以及sql的分析,包括执行计划的查看及sql建议等。 soar中已…...
RISC-V开发 linux下GCC编译自定义指令流程笔记
第一步:利用GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言 第二步:利用RSIC-V的中的.insn模板进行自定义指令的插入 第三步:RISC-V开发环境的搭建 C语言插入汇编 GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言语句方便了…...
java代码是如何与数据库通信的?
Java代码与数据库通信的过程主要通过Java Database Connectivity(JDBC)来实现。JDBC是Java与数据库之间的标准接口,提供了用于执行SQL语句和处理数据库结果的API。以下是Java代码与数据库通信的详细步骤: 一、导入JDBC库 在Java…...
gateway--网关
在微服务架构中,Gateway(网关)是一个至关重要的组件,它扮演着多种关键角色,包括路由、负载均衡、安全控制、监控和日志记录等。 Gateway网关的作用 统一访问入口: Gateway作为微服务的统一入口,…...
北京数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂
随着北京数字孪生工业互联网可视化技术的深入应用,新型工业化智能制造工厂正逐步迈向智能化、高效化的全新阶段。这项技术不仅实现了物理工厂与数字世界的精准映射,更通过大数据分析、人工智能算法等先进手段,为生产流程优化、资源配置合理化…...
土地规划与区域经济发展:筑基均衡未来的战略经纬
在新时代背景下,土地规划不仅是空间布局的艺术,更是推动区域经济均衡发展的关键引擎。土地资源的合理配置对于激发区域潜能、促进经济结构优化有着重要意义。本文将深入剖析土地规划如何成为促进区域经济均衡发展的强大动力。 一、土地规划与区域经济的…...
wsl(2) -- ubuntu24.04配置
1. 常用脚本及别名配置 修改的文件内容参考另一篇文章常用bash脚本。 修改~/.bashrc,在文件末尾追加以下内容。 # Add by user export MYTOOLS$HOME/tools export MYBINS$HOME/bin # 系统中其他地方已经添加过了,暂不清楚是哪里添加的 #export PATH$M…...
python快速搭建https服务器
本文介绍了在ubuntu操作系统上搭建https服务器的过程 在一台连接到网络的主机上搭建https服务器,假设该主机的ip地址为:10.98.69.174 创建证书example.crt和私钥example.key openssl req -newkey rsa:2048 -nodes -keyout example.key -x509 -days 365…...
网络原理3-应用层(HTTP/HTTPS)
目录 DNSHTTP/HTTPSHTTP协议报文HTTP的方法请求报头、响应报头(header)状态码构造HTTP请求HTTPS 应用层是我们日常开发中最常用的一层,因为其他层:传输层、网络层、数据链路层、物理层这些都是操作系统和硬件、驱动已经实现好的,我们只能使用…...
JVM(HotSpot):堆空间(Heap)以及常用相关工具介绍
文章目录 一、内存结构图二、堆的定义三、堆内存溢出四、堆内存排查工具 一、内存结构图 二、堆的定义 1、通过new关键字创建的对象,都会放到堆空间中。 2、它是线程共享的,堆中的对象都要考虑线程安全问题。 那有同学肯定会问,方法内通过n…...
【Python语言初识(六)】
一、网络编程入门 1.1、TCP/IP模型 实现网络通信的基础是网络通信协议,这些协议通常是由互联网工程任务组 (IETF)制定的。所谓“协议”就是通信计算机双方必须共同遵从的一组约定,例如怎样建立连接、怎样互相识别等,…...
使用root账号ssh登录虚拟机ubuntu
在C:\Users\Administrator\.ssh目录下的config中,添加ubuntu会在根目录中,建立一个root文件夹。在该文件夹中建一个.ssh目录。像免密登录ubuntu设置中,把公钥考进去。在vscode中打开文件夹中选择要打开的文件夹,就可以不需要在ubu…...
五子棋双人对战项目(1)——WebSocket介绍
目录 一、项目介绍 如何实现实时同步对局? 二、WebSocket 1、什么是WebSocket? 2、WebSocket的报文格式 opcode payload len payload data 3、WebSocket握手过程 4、WebSocket代码的简单编写 三、WebSocket 和 HTTP的关系 1、相同点…...
rabbitMq------信道管理模块
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言信道管理的字段申明/删除交换机申明/删除队列绑定/解绑消息的发布消息确认订阅队列取消订阅信道内存管理类打开信道关闭信道/获取指定信道 总结 前言 信道是在…...
如何只用 CSS 制作网格?
来源:how-to-make-a-grid-like-graph-paper-grid-with-just-css 在看 用于打印到纸张的 CSS 这篇文章时,对其中的网格比较好奇,作者提供了 stackoverflow 的链接,就看到了来源的这个问题和众多回复。本文从里面挑选了一些个人比较…...
Linux安装RabbitMQ安装
1. RabbitMQ介绍 1.1 RabbitMQ关键特性 异步消息传递:允许应用程序在不直接进行网络调用的情况下交换消息。 可靠性:支持消息持久化,确保消息不会在系统故障时丢失。 灵活的路由:支持多种路由选项,包括直接、主题、…...
SpringBoot驱动的社区医院信息管理平台
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理社区医院信息平台的相关信息成为必然。开发…...
MyBatis-Plus如何分页查询?
MyBatis-Plus提供了一种简单而强大的分页查询功能,可以通过使用Page对象和Mapper接口中的方法来实现。以下是分页查询的基本步骤: 添加分页插件依赖 确保你的项目中已经添加了MyBatis-Plus的分页插件依赖。 <dependency><groupId>com.bao…...
云原生之容器编排实践-OpenEuler23.09离线安装Kubernetes与KubeSphere
背景 有互联网的日子确实美好,不过有时候,仅仅是有时候,你可能会面临离线部署 Kubernetes 与 KubeSphere 集群的要求。。 我们借助由青云开源的容器平台, KubeSphere 来进行可视化的服务部署。 KubeSphere 是在 Kubernetes 之上…...
构建企业数字化转型的战略基石——TOGAF框架的深度解析
数字化时代的企业变革需求 在全球范围内,数字化转型已成为企业提高竞争力、优化运营流程、提升客户体验的核心战略。数字技术的迅猛发展,不仅改变了传统行业的运作模式,也迫使企业重新思考其业务架构和技术基础设施。TOGAF(The O…...
docker -私有镜像仓库 - harbor安装
文章目录 1、镜像仓库简介2、Harbor简介3、下载与安装3.1、下载3.2、安装3.2.1、上传harbor-offline-installer-v2.8.2.tgz到虚拟机中解压并修改配置文件3.2.2、解压tgz包3.2.3、切换到解压缩后的目录下3.2.4、准备配置文件3.2.5、修改配置文件 4、启动Harbor5、启动关闭命令6、…...
公司关于网站建设的通知/营销策划师
原子性 (Atomicity) 原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做。 隔离性 (Isolation) 隔离性是指多个事务并发执行的时候,事务内部的操作与其他事务是隔离的,并发执行的…...
做动态网站必学/广告推广网站
💥 项目专栏:【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据 前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目…...
阿里网站年费续费怎么做分录/百度广告一级代理
txt中数据格式如下:期号 红球 蓝球 开奖时间 开奖公告2012041 08 11 15 20 24 32 02 2012-04-10 开奖公告2012040 03 08 09 22 25 31 10 2012-04-08 开奖公告2012039 01 02 05 13 22 29 08 2012-04-05 开奖公告2012038 09 10 11 15 19 33 16 2012-04-03 开奖公告201…...
一个公司能备案多个网站吗/搜索引擎实训心得体会
int main(int argc , char *argv[])//测试调用函数 {const char *env_init[] {"USERunkown","PATHmypath",NULL};pid_t pid;if( (pid fork()) < 0 )err_sys("fork error");else if(pid 0)//这个很牛逼的样子哦,还可以这样玩,在子函数里面调…...
烟台开发区人才市场招聘信息/合肥网络公司seo建站
奔小康赚大钱Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2325 Accepted Submission(s): 1020Problem Description传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房…...
做美甲批发的都上什么网站/关键词批量调词软件
标记说明Ag形语素 形容词性语素。形容词代码为a,语素代码g前面置以A。a形容词 取英语形容词adjective的第1个字母。ad副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。an名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。b区…...