JAVA封装和包

一.包的概念:

        下面是包的目录位置:

        

        在src底下的demo,com,baidu相当于一个文件夹,可以存放类,同一个包类名不能相同,不同的包的类名可以相同。(通俗点来说:一个包相当于一个文件夹,里面的类相当于文件)

        自定义包里的类可以被其他包里的类访问。(具体看下面内容)

       二.访问权限控制符

        有这么一张图:(“√”代表有权限访问的类)

        

        它可以修饰类的成员属性,被修饰的成员访问权限会被改变。 

         (1)private 

        比如有这么一段代码:

        

        这是同一个包的不同的类,正常来说,public 修饰的成员变量 在另一个类里也能访问赋值,但这里报错了,我们通过引用变量赋值不了,是因为,这两个成员属性被 private 修饰了,使得同一个包不同的类里不能访问了,那么我们想要赋值怎么办呢?

        可以这样:

        

         可以看到,正常编译并打印了数据。

        我们是通过左边类里的方法 setName 和 set Age 来给成员变量赋值,在右边通过 引用 . 方法名就可以访问左边方法 setName 和 set Age 来给成员变量赋值了。

        (2)  default

        该访问权限控制符是什么都不写时的默认权限。

        看下面代码:

        

        成员属性前面什么都不写,默认权限是 default ,这是同一个包不同的两个类这两个类都在 demo 包里,我们是通过右边的类的引用来赋值,可以看到正常编译并打印了。

        但是,如果在不同的包呢?

        

        Student 类是在 demo包下面的 ,Test 类是在 com 包下面的,结果编译失败了。 

        三.static修饰成员属性

        看下面代码:

        

        成员变量 h 被 static 修饰后,那么此时每个对象当中的成员就不包含这个属性了,而是单独存储在方法区中。

        

         h 成为静态成员变量,也叫类变量。那么,我们可以怎么访问他呢?

        有两种方法:

        第一种:通过成员变量来访问:

        

        可以看到打印出结果了。但是,这样访问静态成员变量是不合理的,不建议这样访问。

         第二种:通过类名访问:

        

        这样才是合理的,通过   类名.静态成员变量名  来进行访问。

        四.static 修饰方法

       如果静态成员变量被private修饰了,那么外面的类又该怎么访问他呢?

        看下面代码:

        

        上述代码中,我们是通过创建一个静态方法  public static String getclassroom 来进行访问的,通过  类名.方法名 来进行调用该静态方法,就能获得静态成员的值进行打印。

        注意:

        静态方法不能直接来访问 外部的非静态成员变量/方法。

        比如:

        

        因为 变量 name 和 age 的创建 需要有对象,但是右边传递的是类名,并没有引用,也没有对象的 变量 name 和 age ,所以左边的静态方法 getclassroom 无法获得引用信息。 

        五.代码块

        代码块分为:

        实例代码块,静态代码块,构造代码块

        他们的执行顺序是:

       (静态的成员变量)  ---->   静态代码块  ---->  实例代码块 ----> 构造代码块

        比如:

        

        程序的结果:

        

        首先,我们可以看到,静态代码块只会执行一次,后面 student 2 访问类时不会再打印一次静态代码块内容了,打印结果其实还与静态代码块定义的顺序有关,如果把静态代码块1 和 2 调换顺序,结果就会相反,本图不做调换顺序的演示。

        静态代码块可以给静态成员赋值,不能给非静态成员赋值,因为非静态成员访问需要引用,而静态代码块不需要引用。

        实例代码块执行结果也和定义的顺序有关,并且实例代码块可以给非静态成员赋值。

         最后是执行构造代码。

        

         

        

        

        

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

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

相关文章

手撕数据结构 —— 堆(C语言讲解)

目录 1.堆的认识 什么是堆 堆的性质 2.堆的存储 3.堆的实现 Heap.h中接口总览 具体实现 堆结构的定义 初始化堆 销毁堆 堆的插入 堆的向上调整算法 堆的插入的实现 堆的删除 堆的向下调整算法 堆的删除的实现 使用数组初始化堆 获取堆顶元素 获取堆中的数据…

南科大分享|大数据技术如何赋能大模型训练及开发

嘉宾介绍 张松昕,南方科技大学统计与数据科学系研究学者,UCloud 顾问资深算法专家,曾任粤港澳大湾区数字经济研究院访问学者,主导大模型高效分布式训练框架的开发,设计了 SUS-Chat-34B 的微调流程,登顶 Ope…

2010年国赛高教杯数学建模A题储油罐的变位识别与罐容表标定解题全过程文档及程序

2010年国赛高教杯数学建模 A题 储油罐的变位识别与罐容表标定 通常加油站都有若干个储存燃油的地下储油罐,并且一般都有与之配套的“油位计量管理系统”,采用流量计和油位计来测量进/出油量与罐内油位高度等数据,通过预先标定的罐容表&#…

手把手教你在一台服务器上部署多个nginx

1.安装依赖和插件 yum -y install gcc gcc-c pcre pcre-devel openssl openssl-devel zlib zlib-devel wget net-tools 如果下载安装失败,可以考虑更换一下网络YUM源后再重新执行上一步。CentOS更换网络yum源——阿里源-CSDN博客 2.下载nginx的压缩包 cd /usr/l…

JIT详解

文章目录 JIT为什么说 Java 语言“编译与解释并存”? JIT原理JVM 架构简览JIT 编译流程JIT 编译器的实现优化策略方法内联逃逸分析 JIT 在Java中,JIT(Just-In-Time)编译器是Java虚拟机(JVM)的一个重要组成…

数据结构邻接表表示图的深度优先搜索遍历 有向图+无向图(C语言代码+终端输入内容)

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #define MAXVEX 20 //下面三个结构体就是邻接表的结构体&#xff0c;完全一样的方式 typedef struct EdgeNode {int adjvex;struct EdgeNode* next; }EdgeNode; typedef struct VertexNo…

sql数据库命令行操作(数据库的增删改查)

查询数据库 查询电脑里面所有数据库 SHOW DATABASES;查询当前所处的数据库 SELECT DATABASE();应用场景&#xff1a;当我使用了USE命令后不知道自己所在哪个数据库时&#xff0c;可以使用这个命令查询自己所在数据库 创建数据库 创建 CREATE DATABASE [IF NOT EXISTS] 数据…

UE4 材质学习笔记10(程序化噪波/覆雪树干着色器/岩层着色器)

一.程序化噪波 柏林噪波是一种能生成很好的随机图案的算法&#xff0c;它是一个无限的、不重复的图案&#xff0c;可以采用这种基础图案并以多种方式对其进行修改&#xff0c; 将它缩放并进行多次组合&#xff0c;就可以创建一个分形图案。这些组合的缩放等级称为一个Octave 这…

守护“视界”,手持式视力筛查仪解决方案

根据国家卫健委数据显示&#xff0c;2022年我国儿童青少年总体近视率为53.6%&#xff0c;整体近视率呈低龄高发态势&#xff0c;其中小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生甚至近视率高达80.5%。随着电视、电脑、平板、手机等电子设备深度侵入人们的生活&a…

力扣题31~40

题31&#xff08;中等&#xff09;&#xff1a; 分析&#xff1a; 其实这题题目比较难懂&#xff0c;题目还是挺简单的 我们可以从后面末尾开始&#xff0c;如果前一个大于后面的&#xff0c;说明后面不用动&#xff0c;如果小于&#xff0c;那就找仅仅大于它的数字放前面&…

iOS 18升级:避免常见陷阱,顺利完成升级

随着iOS 18的发布&#xff0c;许多用户都希望尽快体验到新系统带来的新功能和改进。然而&#xff0c;升级过程可能会因为准备工作不足或对步骤的不熟悉而变得复杂。本文旨在为用户提供一个清晰的升级指南&#xff0c;确保升级过程既平滑又安全。 升级前的准备工作 在开始升级之…

Linux操作系统小项目——实现《进程池》

文章目录 前言&#xff1a;代码实现&#xff1a;原理讲解&#xff1a;细节处理&#xff1a; 前言&#xff1a; 在前面的学习中&#xff0c;我们简单的了解了下进程之间的通信方式&#xff0c;目前我们只能知道父子进程的通信是通过匿名管道的方式进行通信的&#xff0c;这是因…

JAVA自动化测试TestNG框架

1.TestNG简介 JAVA自动化测试最重要的基石。官网&#xff1a;https://testng.org 使用注解来管理我们的测试用例。 发现测试用例 执行测试用例 判断测试用例 生成测试报告 2.创建Maven工程 2.1创建一个maven工程 2.2设置maven信息 2.3设置JDK信息 2.4引入testng依赖 <dep…

软考高级系统规划与管理师,都是精华知识点!

知识点&#xff1a;信息的定义和属性 1、 信息的基本概念 l 信息是客观事物状态和运动特征的一种普遍形式&#xff0c;客观世界中大量地存在、产生和传递着以这些方式表示出来的各种各样的信息。 l 维纳&#xff08;控制论创始人&#xff09;&#xff1a;信息就是信息&#…

指针——数据结构解惑

文章目录 一.取指针和解指针二.为什么用指针&#xff1f; 指针存的是地址 一.取指针和解指针 int main() {int a0;int * p ;//声明int类型的**指针**char * m ;//声明char类型的**指针**&a;//a是个变量&#xff0c;&a&#xff0c;把地址取出来p&a;//p指针存的a的地…

双十一性价比高的宠物空气净化器推荐,希喂、美的、352测评分享

不知不觉这一年就要过去了&#xff0c;别问我为什么这么感伤&#xff0c;因为双十一要来了&#xff0c;我要开始”剁手“了&#xff0c;尤其是必须得买宠物空气净化器。 因为我家里养了两只猫&#xff0c;超级爱掉毛&#xff0c;每天为了清理这些猫毛我都要烦死了&#xff0c;…

LangChain4j使用阿里云百炼 进行AI调用

LangChain4j 介绍 LangChain4j 是一个专为Java开发者设计的开源库&#xff0c;旨在简化将大型语言模型&#xff08;LLM&#xff09;集成到Java应用程序中的过程。它于2023年初开发&#xff0c;灵感来源于Python和JavaScript的LLM库&#xff0c;特别是为了填补Java领域在这一方面…

支持阅后即焚的笔记Enclosed

什么是 Enclosed &#xff1f; Enclosed 是一个简约的网络应用程序&#xff0c;旨在发送私人和安全的笔记。所有笔记均经过端到端加密&#xff0c;确保服务器和存储对内容一无所知。用户可以设置密码、定义有效期 (TTL)&#xff0c;并选择在阅读后让笔记自毁。 软件特点&#x…

软考高项一年只考一次,2025 年会更难考吗?

根据近几年的考试情况来看&#xff0c;可以推测25年的高项考试可能会更加困难。值得关注的是2024年的考试情况&#xff0c;当年的高项考试是第二次机考&#xff0c;考试形式已经相对稳定。上午考试的科目知识点分布保持稳定&#xff0c;包括1道综合计算题和2道分析题的案例分析…

决策树和集成学习的概念以及部分推导

一、决策树 1、概述 决策树是一种树形结构&#xff0c;树中每个内部节点表示一个特征上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;每个叶子节点代表一种分类结果 决策树的建立过程&#xff1a; 特征选择&#xff1a;选择有较强分类能力的特征决策树生成…