Java-类与对象(下)

news2024/10/7 10:24:35

访问限定符
类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。
在这里插入图片描述
这里目前主要掌握private,default和public
public:可以理解为一个人的外貌特征,谁都可以看得到
default: 同一个包中,default权限指:什么都不写时的默认权限,即没有修饰限定符
private:同一个类中
例子如包的访问权限控制


访问private属性的方法
在这里插入图片描述
如下,生成属性接口
在这里插入图片描述
在这里插入图片描述


static成员
之前在Student类中定义的成员变量,每个对象中都会包含一份(称之为实例变量),因为需要使用这些信息来描述具体的学生
而现在要表示学生上课的教室,这个教室的属性并不需要每个学生对象中都存储一份,而是需要让所
有的学生来共享。
在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对
象,是所有对象所共享的。
在这里插入图片描述


直接通过类访问
在这里插入图片描述
或者通过对象访问
在这里插入图片描述
在这里插入图片描述


static修饰成员变量

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
【静态成员变量特性】
.不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生


在这里插入图片描述


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

4.静态成员变量是什么时候初始化的
在加载的时候就被初始化了,静态的是最先最执行的


在这里插入图片描述
静态成员变量与对象没有关系
在这里插入图片描述


static修饰成员方法
通过类调用
在这里插入图片描述
通过对象调用
在这里插入图片描述


在静态成员方法中,调用非静态的成员方法
在这里插入图片描述
在这里插入图片描述


Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过
静态方法来访问的。
【静态方法特性】

  1. 不属于某个具体的对象,是类方法
  2. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者
  3. 不能在静态方法中访问任何非静态成员变量
  4. 静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

static成员变量初始化
静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化

就地初始化
就地初始化指的是:在定义时直接给出初始值
在这里插入图片描述


在这里插入图片描述
静态成员方法在对象为空的情况下,也可以被调用


在这里插入图片描述


在这里插入图片描述


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


在这里插入图片描述


在这里插入图片描述


private可以修饰成员变量,成员方法和构造方法
在这里插入图片描述


代码块
使用 {} 定义的一段代码称为代码块。根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块
构造块
静态块
同步代码块(后续讲解多线程部分再谈)


普通代码块:定义在方法中的代码块.
在这里插入图片描述


构造代码块
定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。
在这里插入图片描述


静态代码块
使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。
在这里插入图片描述
如上,完成了对静态变量的初始化


从上图还可以看出,在静态块,构造块,构造方法的执行顺序为
在这里插入图片描述


多个静态代码块时
在这里插入图片描述
在这里插入图片描述
结果由最后一个静态块决定

注意事项
静态代码块不管生成多少个对象,其只会执行一次
在这里插入图片描述

静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
实例代码块只有在创建对象时才会执行
在这里插入图片描述


对象的打印
在这里插入图片描述
如果想要默认打印对象中的属性该如何处理呢?答案:重写toString方法即可
在这里插入图片描述
在这里插入图片描述


内部类

当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服
务,那么这个内部的完整结构最好使用内部类。
可以将一个类定义在另一个类可以将一个类定义在另一个类或者一个方法的内部。
内部类也是封装的一种体现。

public class OutClass {
class InnerClass{
}
}
// OutClass是外部类
// InnerClass是内部类


内部类的分类
根据内部类定义的位置不同,一般可以分为以下几种形式:

  1. 成员内部类(普通内部类:未被static修饰的成员内部类 和 静态内部类:被static修饰的成员内部类)
  2. 局部内部类(不谈修饰符)、匿名内部类

实例内部类
即未被static修饰的成员内部类

在实例内部类中可以直接访问外部类中:任意访问限定符修饰的成员,包括变量和方法
在这里插入图片描述

要访问实例内部类中成员,必须要创建实例内部类的对象,建实例内部类对象时必须借助外部类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

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

在这里插入图片描述


既有内部类的this,又有外部类的this
在这里插入图片描述


【注意事项】

  1. 外部类中的任何成员都可以在实例内部类方法中直接访问
  2. 实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束
  3. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名
    称.this.同名成员 来访问
  4. 实例内部类对象必须在先有外部类对象前提下才能创建

静态内部类
被static修饰的内部成员类称为静态内部类。

在静态内部类中只能访问外部类中的静态成员
在这里插入图片描述


创建静态内部类对象时,不需要先创建外部类对象
在这里插入图片描述


局部内部类
定义在外部类的方法体或者{}中,局部内部类只能在所定义的方法体内部使用


匿名内部类
在这里插入图片描述
在匿名类内部,访问是不可以改变的
在这里插入图片描述


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

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

相关文章

金狮金狮鹏保宝点盾云等加密视频翻录录屏教程

这款软件采用独家方法特殊方式打开录屏工具,理论上通杀所有的检测进程的加密视频播放器的检测,不被检测。 使用方法很简单: 点击 打开录屏工具,就可以以特殊方式加载录屏工具。 然后就可以开始录屏了。 下载:spjm.lan…

在线HmacSHA1加密工具--在线获取哈希值又称摘要

具体请前往: 在线计算HmacSha1工具

0102垂直分片-jdbc-shardingsphere

1 前言 垂直分片分为垂直分库于垂直分表,但是实际应用中数据库表会根据业务需要提前做好规划,垂直分表的情况很少使用。但是随着业务增长,某些重点业务数据库压力增大,可能考虑需要考虑垂直分库的情况。 垂直分库,简…

22-组件通信

一. 什么是组件通信 组件通信,就是指 组件与组件 之间的数据传递 1. 组件的数据是独立的,无法直接访问其他组件的数据。 2. 想用其他组件的数据 -> 组件通信 二. 不同的组件关系 和 组件通信方案分类 组件关系分类: 1. 父子关系 2. 非父子关系 组件…

【Unity】制作一个简单的菜单栏页面并实现其功能

这是一个简单的菜单页面制作,接下来我们将制作一个完整的菜单页面,并且通过一定的代码去实现它对应的效果。这个主要的功能就是我们在游戏中如果想暂停一下或者重新开始,那么就要用到我们这个功能。接下来我们将实现在游戏中按ESC退出键可以调…

第6步---MySQL的控制流语句和窗口函数

第6步---MySQL的控制流语句和窗口函数 1.IF关键字 -- 控制流语句 SELECT IF(5>3,大于,小于);-- 会单独生成一列的 SELECT *,IF(score >90 , 优秀, 一般) 等级 FROM stu_score;-- IFNULL(expr1,expr2) SELECT id,name ,IFNULL(salary,0),dept_id FROM emp4;-- ISNULL() …

【C语言学习】数组

定义数组 <类型>变量名称[元素变量] 元素数量必须是整数 int a[10]; double b[20]; scanf("%d",&a[i]);//输入数组数组 数组是一种容器&#xff0c;特点为其中所有元素具有相同的数据类型&#xff1b; 一旦创建&#xff0c;不能改变大小&#xff1b; 数…

【C语言】什么是结构体内存对齐?结构体的大小怎么计算?

目录 1.结构体内存对齐 对偏移量的理解&#xff1a;​ 2.结构体的大小计算 2.1结构体中只有普通的数据类型的大小计算 2.2 结构体中有嵌套的结构体的大小计算 3.修改默认对齐数 4.为什么存在内存对齐? 这篇文章主要介绍结构体内存对齐和如何计算大小。 在学习结构体内存…

个性化定制界面 VS 极简版原装界面:你更喜欢哪一个?为什么?

文章目录 每日一句正能量前言自己的喜好使用这种界面的原因这种界面对你的影响后记 每日一句正能量 不管昨天、今天、明天&#xff0c;能豁然开朗就是最美好的一天。 前言 个性化定制界面和极简版原装界面&#xff0c;哪一个你用起来更加顺手呢&#xff0c;相比之下你更喜欢哪一…

空洞卷积网络实现

代码&#xff1a; import torch.nn as nn import numpy as npfrom matplotlib import pyplot as plt import time #from utils import get_accur,load_data,trainimport torchvision from torchvision import transforms from torch.utils.data import DataLoader import torch…

硬编码基础一(经典定长指令,寄存器相关)

硬编码基础一&#xff08;定长指令&#xff09; push/pop 通用寄存器 50~57是push8个32位通用寄存器 58~5f是pop8个32位通用寄存器 inc/dec 通用寄存器 40~47是inc8个32位通用寄存器 47~4f是dec8个32位通用寄存器 八位通用寄存器的立即数赋值 b0~b3 {立即数} 是低八位(…

蓝蓝设计-专业UI设计公司-界面设计作品

数慧时空&#xff08;全称&#xff1a;北京数慧时空信息技术有限公司&#xff09;是以空间信息技术为核心、国内领先的国土资源行业解决方案提供商&#xff0c;具有业务咨询、自主软件研发、数据加工和信息服务的全业务综合服务能力&#xff0c;是国土资源部最重要的信息化合作…

AD19基础应用技巧(位号的调整)

在进行元件装配时&#xff0c;需要输出相应的装配文件&#xff0c;而元件的位号图可以方便比对元件装配。隐藏其他层&#xff0c;只显示Overlay和Solder层可以更方便地进行位号调整。 一般来说&#xff0c;位号大都放到相应元件旁边&#xff0c;其调整应遵循以下原则&#xff…

LLM低成本微调方法

LLM日益流行&#xff0c;已经渗透到各个领域&#xff0c;比如生物医学&#xff0c;但是模型的规模导致微调LLM对普通用户不够友好&#xff0c;因此&#xff0c;我们需要借助一些低成本方法&#xff0c;通过更新少量参数也达到与LLM全参数更新一样的效果。这里介绍三种主流方法&…

JVM——垃圾回收(垃圾回收算法+分代垃圾回收+垃圾回收器)

1.如何判断对象可以回收 1.1引用计数法 只要一个对象被其他对象所引用&#xff0c;就要让该对象的技术加1&#xff0c;某个对象不再引用其&#xff0c;则让它计数减1。当计数变为0时就可以作为垃圾被回收。 有一个弊端叫做循环引用&#xff0c;两个的引用计数都是1&#xff…

npm和node版本升级教程

cmd中查看本地安装的node版本 node -v //查询node的位置 where node2.官网下载所需要的node版本&#xff0c;安装在刚查出来的文件夹下&#xff0c;即覆盖掉原来的版本 3.查看node版本是否已经更新 4.查看npm版本是否和node版本相匹配 cnpm install -g npm

超实用的两款截图工具(FastStone Capture 和 Snipaste)

文章目录 一、概述1&#xff09;FastStone Capture2&#xff09;Snipaste 二、FastStone Capture 和 Snipaste 截图软件安装 一、概述 "FastStone Capture" 和 "Snipaste" 都是计算机上常用的截图工具&#xff0c;用于捕捉屏幕截图、编辑图像以及进行屏幕…

湘潭大学 湘大 XTU OJ 1217 A+B VII 题解(非常详细)

链接 1217 题目 题目描述 小明非常高兴你能帮他处理那些罗马数字&#xff0c;他想学着自己写罗马数字&#xff0c;但是他不知道自己到底写对了没有。 请你帮他写个程序&#xff0c;能正确地将10进制数字转换成罗马数字&#xff0c;以便他能进行核对。 罗马数字是使用字母组…

Docker运行Nacos容器,过一会就报错`UnsatisfiedDependencyException`

Docker运行Nacos容器&#xff0c;过一会就报错UnsatisfiedDependencyException 问题背景&#xff1a; 最近要上线一个项目&#xff0c;由于要使用Nacos作为服务注册中心&#xff0c;为了方便&#xff0c;我就打算直接使用Docker部署Nacos&#xff0c;没想到Nacos启动没一会就嗝…

三、Kafka生产者

目录 3.1 生产者消息发送流程3.1.1 发送原理 3.2 异步发送 API3.3 同步发送数据3.4 生产者分区3.4.1 kafka分区的好处3.4.2 生产者发送消息的分区策略3.4.3 自定义分区器 3.5 生产者如何提高吞吐量3.6 数据可靠性 3.1 生产者消息发送流程 3.1.1 发送原理 3.2 异步发送 API 3…