JavaSE14-面向对象-修饰符

news2024/11/16 19:44:37

文章目录

  • 一、权限修饰符和包
    • 1.权限修饰符
    • 2.包
  • 二、static
    • 1.静态成员的调用格式
    • 2.注意事项
    • 3.static内存图
    • 4.使用场景
  • 三、final

一、权限修饰符和包

1.权限修饰符

  • 使用权限修饰符来控制被修饰的成员(如成员变量)的使用权限
  • Java中有四种权限修饰符:public,protected,default(default并不是关键字,而是代表不写权限修饰符),private
  • 被不同的权限修饰符修饰后,被修饰的成员可以在不同范围内被使用。
    在这里插入图片描述

使用规律总结

  • 我们在工作中一般不使用默认的权限。
  • 如果一个成员我们只想在本类中使用我们就使用private修饰。
  • 如果我们想只被本类和子类使用可以使用protected
  • 如果可以被人任意使用,我们使用public

2.包

全类名:包名+类名
导包:import 全类名 (alt + 回车)

import java.util.Scanner;

二、static

static是一个修饰符,被其修饰的成员就属于类了。会被类的所有对象所共享。

1.静态成员的调用格式

无论是成员变量,还是成员方法。用static修饰后我们即可以用对象名来调用也可以用类名来调用。一般都使用类名称进行调用。

  • 类名.静态变量名​
  • 类名.静态方法名(参数)
class Student{
    public static int num;
    public static void test(){}
}
class Demo{
    public static void main(String[] args){
        Student.num = 10;
        Student.test();
    }
}

2.注意事项

  1. 静态方法中不能直接使用非静态的成员
    因为被static修饰的东西就属于类了,类的加载优先于对象,所以在静态方法中, 不能使用非静态的成员(PS:非静态的成员是属于对象), 类出现的时候对象还不存在,所以不能使用还不存在的东西
  2. 静态方法中不能使用this(只能在一个类的成员方法或构造方法中使用this)
    被static修饰的东西就属于类了,而this代表的某个对象,类加载的时候对象还没创建,所以在静态方法中不能使用this,因为对象都没有出现

3.static内存图

被static修饰的成员就属于类了,随类的加载一起到了方法区,会被类的所有对象共享
在这里插入图片描述

4.使用场景

  1. 如果需要共享数据,可以使用static(工具类)
  2. ​如果想要方便调用某些成员,可以使用static修饰(PS:因为就可以直接用类名来调用,不需要创建对象)

三、final

final可以修饰类,成员方法,局部变量,成员变量。
修饰后的作用如下:​

  1. 可以修饰类,被final修饰的类不能被继承
  2. 可以修饰成员方法,被final修饰的成员方法不能被重写​
  3. 可以修饰局部变量,被final修饰的局部变量就变成了常量,赋值之后就不能被修改​
  4. 可以修饰成员变量,被final修饰的成员变量就变成了常量,一旦赋值之后就不能被修改,并且必须初始化
    有两种初始化方式,一种是直接赋值,另外一种是要在类的所有的构造方法中对其进行赋值

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

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

相关文章

zabbix中的JMX监控、集成告警平台、分布式监控

文章目录前言一、zabbix中的JMX监控二、集成告警平台:zabbix监控结合睿象云报警三、分布式监控1.agent端主动回传数据2.proxy代理前言 一、zabbix中的JMX监控 JMX介绍: Jmx(Java Management Extensions)java管理拓展 JMX特点&…

linux代码库生成-make示例

1、add.c代码实现加法运算: int add(int a,int b) { return ab; } 2、头文件add.h #ifndef ADD_H #define ADD_H int add(int a,int b); #endif 3、CMakeLists.txt编写 cmake_minimum_required(VERSION 2.6) set(CMAKE_C_FLAGS -m32) project(test_add) include_dir…

OpenMLDB 社区月报 | 2023 年 2 月

导言 OpenMLDB 社区每个月都会发布一版社区月报,总结一个月以来的产品动态、社区活动、内容发布等,让大家对我们社区的发展有更加清晰的了解。如果您对我们的社区有任何建议,欢迎在 GitHub 上提 Issues 或 PR ,共同参与社区的建设…

统计学 假设检验

文章目录假设检验假设检验的基本原理提出假设作出决策表述决策结果一个总体参数的检验总体均值的检验总体比例的检验总体方差的检验两个总体参数的检验两个总体均值之差的检验两个总体比例之差的检验两个总体方差比的检验总体分布的检验正态性检验的图示法Shapiro-Wilk 和 K-S …

Vue3 企业级项目实战:通关 Vue3 企业级项目开发,升职加薪快人一步

Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发,升职加薪,快人一步。。「Vue3 企业级项目实战」由程序员十三撰写,2744人购买https://s.juejin.cn/ds/S2RkR9F/ 课程介绍 很高兴为大家介绍这个…

LeetCode 1326. Minimum Number of Taps to Open to Water a Garden【贪心,桶排序】

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

路由网络的构建与配置

Part.1 ⑴ 需求分析 在构建的局域网中,通过路由器间配置静态路由,实现PC1和PC2主机直接连通,主机网段不能与路由器直接互联网段通信。 ⑵ 环境要求 配置虚拟网卡的计算机,安装华为eNSP模拟软件。 规划拓扑 Part.2 ⑴ 拓扑描述…

NVIC 简介、抢占优先级和响应优先级

NVIC 简介 NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。 如果医院只有医生的话,当看病的人很多时,医生就得安排一下先看谁,后看谁,如果…

29 openEuler管理网络-配置网络绑定

文章目录29 openEuler管理网络-配置网络绑定29.1 使用nmcli29.2 使用命令行29.2.1 检查是否已安装Bonding内核模块29.2.2 创建频道绑定接口29.2.3 创建从属接口29.2.4 激活频道绑定29.2.5 创建多个绑定29 openEuler管理网络-配置网络绑定 29.1 使用nmcli 创建名为bond0的绑定&…

vue 组合API

一、组合API是什么?通过创建 Vue 组件,我们可以将界面中重复的部分连同其功能一起提取为可重用的代码段。组合api提供复用性降低耦合性增加可读性下面我们来看下在vue2.0中的一个场景:在2.0里面的**exportdefault{}**通常是由components、pro…

5.排序算法之二:选择排序

选择排序(select sort)在无序列表中,把无序列表分成有序区(刚开始有序区元素个数为0)和无序区(刚开始无序区元素个数为n),循环n-1趟,每一趟找到最小或最大的那个元素&…

CNC数据采集解决方案(2023杭州乐芯科技)

杭州乐芯科技IOT数据采集平台产品是杭州乐芯科技有限公司为满足工业4.0大型集团工厂推出的新一代数据采集平台级产品,可满足单一平台(一个服务器)同时采集各类设备,同时兼容各种工业数据采集协议,单服务器压力测试达10…

chainWebpack之optimization.splitChunks的cacheGroups缓存组代码分块实践案

研究了好几天webpack打包,我们项目是vue的高版本,已经没有了webpack.config.js文件了,是直接在vue.config.js里的chainWebpack方法直接配置,这样做法的好处是用户既可以保留webpack的默认配置,又可以通过chainWebpack设…

【Java开发】JUC基础 05:线程通信/协作

1 生产者消费者问题📌 线程通信应用的场景可以简单地描述为生产者和消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费;如果仓库中没有产品,则生产者将产品放入仓库&a…

Java知识复习(八)Spring基础

1、什么是Spring框架? Spring :是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性 2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework,就是指如上图所示的各项功能模块Spr…

【Java 多线程学习】

多线程学习多线程1. 并行与并发2.进程和线程3. *****多线程的实现方式3.1 继承Thread类的方式进行实现3.2 实现Runnable接口方式进行实现3.3 利用Callable和Future接口方式实现3.4 设置获取线程名字4.获得线程对象5.线程休眠6.线程调度[线程的优先级]7.后台线程/守护线程多线程…

Pytest自动化框架-权威教程02-Pytest 使用及调用方法

Pytest 使用及调用方法使用python -m pytest调用pytest2.0版本新增你可以在命令行中通过Python编译器来调用Pytest执行测试:Copypython -m pytest [...]通过python调用会将当前目录也添加到sys.path中,除此之外,这几乎等同于命令行直接调用pytest [...]。可能出现的执行退出cod…

【K8S笔记】Kubernetes 集群架构与组件介绍

K8S 官方文档 https://kubernetes.io/zh/docs/home ##注重关注 概念和任务 板块。 K8S 集群架构 K8S也是运用了分布式集群架构: 管理节点/Master 整个集群的管理,任务协作。工作节点/Node 容器运行、删除。 K8S 组件介绍 管理节点/Master 相关组件 …

JDK1.8 ConcurrentHashMap

数据结构锁sizeCtlconcurrencyLevelForwardingNode、ReservationNode扩容get、put、removehashmap:线程不安全 hashtable:通过synchronized保证线程安全但效率低。强一致性 ConcurrentHashMap:弱一致性 数据结构 ConcurrentHashMap为node数…

前端转golang从小白到实战自学笔记(2023/3/1)

了解:https://www.runoob.com/go/go-concurrent.htmlgolang学习方向区块链研发工程师go服务器>(特点:数据处理,处理大并发)/游戏软件工程师golang分布式/云计算软件工程师(盛大云、cdn、京东&#xff09…