当前位置: 首页 > 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在创建对象时会为它们分配内存,不再使用时会自动释放内存,这个过程称为垃圾收集。 四种常见的内存泄…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...