当前位置: 首页 > news >正文

javaSE系列之类与对象

javaSE系列之类与方法

  • 什么是类
  • 类的定义
    • 书写事项
  • 什么是实例化
  • this引用
    • this的注意事项
  • 对象的初始化
    • 构造方法
  • 封装的概念
    • 访问限定符
  • 封装扩展之包
  • static成员
    • static的特性
    • static的初始化
  • 代码块
    • 注意事项
  • 内部类
    • 1.实例内部类

💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞

什么是类

对事物简单的描述,该过程对对象(实体)进行抽象(对一个复杂事物的重新认知),类是用来对一个实体(对象)来进行描述的。 列如洗衣机作为一个类
其中成员变量就可用 :产品品牌,型号,产品重量…来描述
成员方法就可用:洗衣,烘干,定时…

加粗样式//在同一个类(父类与子类算同一类)中可以直接访问 不需要引用

类的定义

class 类名()
{
访问权限 数据类型 成员变量;
访问权限 返回值 成员方法(形参);
}

public class Student{public String name ;public int age;public int grade;public void study(){System.out.println("学习");}
}//类名采用大驼峰模式

书写事项

一个文件最好定义一个类
和文件名相同的类必须用public修饰
main()方法所在的类一般使用public修饰

什么是实例化

1.用类类型创建对象的过程,称为类的实例化。 采用new类名,配合类名来实例化
2.使用.来访问对象的属性与方法
3.一个类可以多次实例化

Student student = new Student ();//实例化
//public  class Student {
// public String name ;
// public int age;
// public int grade;
// public void study(){// System.out.println("学习");//  }
//}

this引用

this可以当成当前对象的引用

在这里插入图片描述

//当形参名与成员变量相同时
public  class Student {public String name ;public int age;public int grade;public Student(int age){this.age = age;}public void setName(String name){this.name = name;}
}

this的注意事项

this只能在成员方法中使用
在成员方法中,this只能引用当前对象,不能引用其它方法//我的理解是 new ? ()这个就是当前对象

对象的初始化

当局部变量没有初始化时默认为初始值为0 ,引用类型为null
初始化一般有三种方法
1.通过成员方法
2.构造方法
3.通过引用.成员来初始化
4.就地初始化
5.通过实例代码块初始化

1.通过成员方法
在这里插入图片描述
2.通过引用.成员来初始化
在这里插入图片描述
4.就地初始化
在这里插入图片描述

构造方法

定义:构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象
时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
作用:就是给对象成员进行初始化,并不负责给对象开辟空间 特点:
1.名字必须和类名相同
2. 没有返回值类型
3. 只调用一次
4. 构造方法可以重载但不可以重写
//当重载时,看实例化时调用哪个方法
5.当没有写构造方法时,编译器会自动生成一份默认的方法//一旦用户定义,编译器不在生成
6.可以在无参构造方法,可以通过this调用其他方法构造方法//this()必须是构造方法中第一条语句

构造方式
public 类名(形参)

在这里插入图片描述
在这里插入图片描述
//this(…)相当于 public Student(String name, int age, int grade)

封装的概念

面向对象程序三大特性:封装、继承、多态 本章先讲封装:
将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互

访问限定符

被public修饰的成员和方法,不管是不同包或者是不同类都可以使用
被protected修饰的类,可以在不同类,或者不同包的子类访问
被default修饰的类,可以在同一包中使用
被private修饰的类,可以在同一包中同一类使用//如若没有访问限定符修饰,为default类型
//一般情况下成员变量设置为private,
//成员方法设为public

在这里插入图片描述

封装扩展之包

为了更好的管理类,把多个类收集在一起成为一组,称为软件包。
一般用 import 包.类名 import static 可以导入包的静态方法和名字

在这里插入图片描述

static成员

在Java中,被static修饰的成员,称之为静态方法,也称之为类成员,是所有对象共享的

在这里插入图片描述

static的特性

1.一般通过类名来访问,也可以用对象访问(但一般不建议)
2.不属于某个具体对象,是类的属性,是所有对象共享的,不存储在某个对象的空间
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)
5.不能在静态方法中访问任何非静态成员变量,或者调用任何非静态成员方法

static的初始化

1.就地初始化

在这里插入图片描述

2.静态代码块初始化

在这里插入图片描述

代码块

代码块:使用{}定义的一段代码成为代码块 类型: 1.普通代码块
2. 构造块
3. 静态块
4. 同步代码块//这章不讲

1.普通代码块
在这里插入图片描述
2.构造代码块:一般用于初始化实例
在这里插入图片描述
3.静态代码块//请看静态代码块

注意事项

1.静态代码块不管生成多少个对象,其只会执行一次
2.静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的,实例代码块只有在创建对象时才会执行
3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)。

内部类

可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。内部类也是封装的一种体现。
列如
内部类分为:实例内部类,静态内部类,局部内部类
在这里插入图片描述

1.实例内部类

从两个方面入手

在内部类访问其他成员
访问内部类成员
1.在实例内部类可以直接访问外部类(任何成员都可以)
//外部类与内部类在同一个类里可以直接访问

在这里插入图片描述

内部类相当于外部类的成员,所以也受public , private 等访问限定符的限制

在这里插入图片描述
在这里插入图片描述

  1. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名称.this.同名成员 来访问

在这里插入图片描述

  1. 实例内部类对象必须在先有外部类对象前提下才能创建
  2. 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。

在这里插入图片描述
2.静态变量
//静态内部类中什么都可以定义

  1. 在静态内部类中只能访问外部类中的静态成员
    //如果执意访问 可以在内部类实例化外部类
    在这里插入图片描述
  1. 创建静态内部类对象时,不需要先创建外部类对象
    在这里插入图片描述

在这里插入图片描述

相关文章:

javaSE系列之类与对象

javaSE系列之类与方法什么是类类的定义书写事项什么是实例化this引用this的注意事项对象的初始化构造方法封装的概念访问限定符封装扩展之包static成员static的特性static的初始化代码块注意事项内部类1.实例内部类💗 💗 博客:小怡同学💗 &am…...

远程构建(命令、脚本构建)jenkins

在对应项目,开启远程构建开关添加API token系统设置调整用户权限获取crumbcurl调用构建 1、进入对应项目的设置页面:开启远程构建开关 2、 添加 API token:进入对应用户的设置页面 3、系统设置调整权限,如图 4、由于jenkins的安全…...

2023-03-15 ElasticSearch

ElasticSearch 1.Docker安装ElasticSearch 1.1. es及kibana下载 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2创建映射文件: mkdir -p /elasticsearch/configmkdir -p /elasticsearch/datamkdir -p /elasticsearch/plugins在config下执行 vim elasticsearch…...

指针和数组笔试题解析【下篇】

文章目录👁️6.指针笔试题👀6.1.试题(1)👀6.2.试题(2)👀6.3.试题(3)👀6.4.试题(4)👀6.5.试题(5&am…...

DHCP原理简析及交互实践

环境: os:centos7 dnsmasq:version 2.76 一. dhcp工作原理 首先补充几个dhcp相关的基本概念: 1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用…...

用二极管、三极管和MOS管搭建逻辑门电路

文章目录1. 二极管(1)二极管与门(2)二极管或门2. 三极管(1)三极管非门(2)三极管与门(3)三极管或门(4)三极管与非门(5&…...

SpringBoot:手写一个 SpringBoot Starter

声明:原文作者:yuan_404 文章目录1. 说明2 . 编写启动器3 . 新建项目测试自己写的启动器1. 说明 启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库 命名归约: 官方命名&…...

【23】Verilog进阶 - 数位转换【实时处理 + 标志信号】

【初次尝试】VL32 非整数倍数据位宽转换24to128 1 理解题目含义 根据【模块端口】和【题目描述】本题的真实意思是比较清楚啦。但不可大意轻敌! (1)问题1:输出一直为0 猛然间发现计数值也为0,没有增加 去排查cnt的代码,很容易找到到问题,是cnt上电复位的逻辑写错了 …...

常见的HTTP状态码

一.2开头 200:响应成功; 204:响应成功,但是响应头没有数据; 206:部分响应成功,比如分片上传,断点续传; 二.3开头 301:永久重定向; 302&…...

D. Peculiar Movie Preferences(思维 + 一个坑)

Problem - D - Codeforces 米海打算去看电影。他只喜欢回文电影,所以他想跳过一些(可能是零)场景,让电影的其余部分变成回文。给你一个包含n个长度不超过3的非空字符串的列表,代表Mihai的电影场景。如果s的子序列非空,并且子序列中…...

真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩

💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...

蓝桥刷题总结1

数组三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个…...

淘宝商品详情数据接口 关键字搜索接口 请求代码分享

item_get-获得淘宝商品详情item_get_app-获得淘宝app商品详情原数据item_search-按关键字搜索淘宝商品参数说明通用参数说明参数不要乱传,否则不管成功失败都会扣费url说明 https://api-gw.onebound.cn/平台/API类型/ 平台:淘宝,京东等&#…...

【数据结构】链表OJ(二)

Yan-英杰的博客 悟已往之不谏 知来者之可追 目录 一、反转链表 二、合并两个有序链表 三、链表分割 四、链表的回文结构 一、反转链表 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head [1,2] 输出:[2,1] 示例 3&#xf…...

Linux系统搭建FTP服务器

安装vsftpdyum -y install vsftpd添加FTP用户方式1、添加只允许通过ftp访问的用户useradd -d /home/ftp ftp_user #-d指定用户登录时的启始目录方式2、允许用户登录操作系统usermod -d /home/ftp -s /bin/bash ftp_user #-s指定用户登入后所使用的shell设置用户登录密码passwd …...

MySQL数据同步到 Redis 缓存的几种方法

1 Mysql查完数据,再同步写入到Redis中缺点1:会对接口造成延迟,因为同步写入redis本身就有延迟,并且还要做重试,如果redis写入失败,还需要重试,那就更费时间了。缺点2:不解耦&#xf…...

2023年网络安全比赛--CMS网站渗透中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; 2.使用渗透机对服务器信息收集,将网站的名称作为flag提交; 3.使用渗透机对服务器渗透,将可渗透页面的名称作为flag提交; 4.使用渗透机对服务器渗透,…...

【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴最大公约数一、题目 1、原题链接 4309. 消灭老鼠 2、题目描述 约翰的农场可以看作一个二维平面。 农场中有 n 个老鼠,在毁坏着农田。 第 i 个老鼠的位置坐标为…...

FPGA实现CSI-2 解码MIPI视频 2line 720P分辨率 OV5647采集 提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利:工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰…...

JS面试题收集(持续更新好中...)

1.JavaScript 中的垃圾回收机制 定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。 JavaScript在创建对象时会为它们分配内存,不再使用时会自动释放内存,这个过程称为垃圾收集。 四种常见的内存泄…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...