JAVA知识基础(三):修饰符

JAVA中根据修饰对象的不同可以分为类修饰符、方法修饰符、变量修饰符三类,其中每种修饰符又可以单独分成两类:访问修饰符和非访问修饰符。为了便于理解,本文以访问和非访问的角度展开。

1、访问修饰符

访问修饰符有四个:public、protect、private、default。

  • default (默认): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • public : 对所有类可见。使用对象:类、接口、变量、方法
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

以下是访问权限的一个表

修饰符访问级别同类同包子类不同包
public公开OOOO
protect受保护OOOX
default默认OOXX
private私有OXXX

2、非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

  • static 修饰符,用来修饰类方法和类变量。
  • final 修饰符,用来修饰类、方法和变量,final
    修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
  • abstract 修饰符,用来创建抽象类和抽象方法。
  • synchronized 和 volatile 修饰符,主要用于线程的编程。

这里的关键词也可以称作关键字了,为了叫这顺口,我们下面统一称呼为关键字。

2.1 static关键字

  • 修饰变量:静态变量
    static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。
    静态变量也被称为类变量。局部变量不能被声明为 static 变量。
  • 修饰方法:静态方法
    关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

2.2 final关键字

  • 修饰变量:最终变量
    被 final 修饰的实例变量必须显式指定初始,不能被重新赋值。final 修饰符通常和 static
    修饰符一起使用来创建类常量。

  • 修饰方法:最终方法
    父类中的 final 方法可以被子类继承,但是不能被子类重写。声明 final
    方法的主要目的是防止该方法的内容被修改。

  • 修饰类:最终类
    final 类不能被继承,没有类能够继承 final 类的任何特性。

2.3 abstract关键字

  • 修饰方法:抽象方法
    抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
    抽象方法不能被声明成 final 和 static。
    任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
    如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
  • 修饰类:抽象类
    抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。 一个类不能同时被 abstract 和
    final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。 抽象类可以包含抽象方法和非抽象方法。

2.4 synchronized关键字和volatile关键字

  • synchronized关键字:声明的方法同一时间只能被一个线程访问。

  • volatile关键字:
    修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
    一个 volatile 对象引用可能是 null。

2.5transient 修饰符
序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。

到这里就大致的介绍完了,接下来几篇文章我会分别单独介绍一下static、final、abstract修饰符。

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

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

相关文章

百度推出新技术 MIP,网页加载更快,广告呢?

MIP 项目在 2016 年年初正式发布,帮助移动页面加速(原理)。内测数据表明,MIP 页面在 1s 内加载完成。现在已经有十多家网站加入 MIP 项目,有更多的网站正在加入中。在MIP收到的反馈中,大部分都提到了广告的…

JAVA知识基础(四):深入理解static关键字

1、static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方…

MIP改造常见问题二十问

在MIP推出后,我们收到了很多站长的疑问和顾虑。我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助。 1、MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页面 MIP 化,不会影响其它搜…

Nginx(零):背景

我们今天开始对Nginx的学习,本来是打算第一篇就是基础知识介绍的,但是我感觉在学习一个新知识之前总应该知道,我们为什么要学习它,学习它的意义何在吧!所以我加了背景这一篇作为Nginx开始学习的标志。 1、Nginx的诞生…

Nginx(一):概念基础

上一篇我们介绍了Nginx的背景,现在我们就要开始正式对Nginx的学习了。本篇我们将对Nginx的基本定义进行介绍,了解Nginx到底是什么。然后我们会介绍Nginx最基本的三个概念:反向代理、负载均衡、动静分离。 1、Nginx是什么 Nginx(“engine x”…

MIP 官方发布 v1稳定版本

近期,MIP 官方发布了 MIP 系列文件的全新 v1 版本,建议开发者尽快完成升级。 一、 我是开发者,如何升级版本? 对于 MIP 页面开发者来说,* 只需替换线上引用的 MIP 文件为 v1 版本 *,就可以完成升级。所有…

百度MIP页规范详解 —— canonical标签

百度 MIP 的规范要求必须添加强制性标签 canonical&#xff0c;不然 MIP 校验工具 会报错&#xff1a; 强制性标签 <link rel"/^(canonical)$/"> 缺失或错误 这个标签怎么写&#xff1f;又是干什么用的呢&#xff1f; ** 简单来说&#xff0c;canonical 标签…

Nginx(二):安装、配置、常用命令

1、Nginx在Linux操作系统中的安装 这里简单介绍一下nginx的安装了 1.1、前期准备 在安装nginx之前我们要提前准摆好它的编译工具以及库文件&#xff1a;zlib、poenssl。 还有有让Nginx支持Rewrite功能的PCRE. 安装的途径有很多可以参考&#xff1a;https://www.runoob.com/lin…

JAVA知识基础(五):深入理解final关键字

1.final 关键字 final关键字主要用在三个地方&#xff1a;变量、方法、类。 final修饰变量&#xff1a;final修饰一个类时&#xff0c;表明这个类不能被继承。final修饰方法&#xff1a;final修饰方法&#xff0c;方法不可以重写&#xff0c;但是可以被子类访问 【前提&#…

CMS模板应用调研问卷

截止目前&#xff0c;已经有数十家网站与我们合作&#xff0c;进行了MIP化改造&#xff0c;在搜索结果页也能看到“闪电标”的出现。除了改造方面的问题&#xff0c;MIP项目组被问到最多的就是&#xff1a;我用了wordpress&#xff0c;我用了织梦cms&#xff0c;怎么改MIP呢&am…

Nginx(三):反向代理

我们本篇将通过两个实例进行对Nginx反向代理的学习。 1、概念基础 反向代理&#xff0c;其实客户端对代理是无感知的&#xff0c;因为客户端不需要任何配置就是可以访问。我们只需要将请求发送到反向代理服务器上&#xff0c;有反向代理服务器去选择目标服务器获取数据后&…

VIP站长大会(北京站)常见问题解答

功能支持问题 1. react 能否和 MIP 结合使用&#xff0c;如果暂时不能以后是否有考虑&#xff1f;是否会和其他 JavaScript 框架 (比如 Angular ) 结合 ? 目前暂无计划支持。 2. MIP 页是否支持自定义 cookie? 实现 登录、统计、广告等功能 ? <mip-cookie>组件正在…

Nginx(四):负载均衡Load balancing

1、概念基础 Load balancing&#xff0c;即负载均衡&#xff0c;是一种计算机技术&#xff0c;用来在多个计算机&#xff08;计算机集群&#xff09;、网络连接、CPU、磁盘驱动器或其他资源中分配负载&#xff0c;以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避…

JAVA知识基础(六):抽象

1.概述 抽象类、抽象方法以及接口&#xff0c;这三个知识点是每个程序员必备的基础&#xff0c;无论是在实际编程的时候&#xff0c;还是在面试的时候&#xff0c;都会出现这类问题&#xff0c;面试官很可能就会问你&#xff0c;interface和abstract的区别 当父类知道子类应该…

MIP开发教程(三) 使用MIP-CLI工具调试组件

一 . 在 mip-extensions 仓库中创建新的组件二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发的非通用组件&#xff0c;使用 组件上线平台 提交&#xff0c;上线后代码位于 GitHub/mip-extension-platform 仓…

JAVA知识基础(七):封装

1.概述 封装&#xff08;Encapsulation&#xff09;是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障&#xff0c;防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据&#xff0c;必须通过严格的接口控制…

MIP开发教程(二) 使用MIP-CLI工具调试MIP网页

初始化 MIP 配置 新建一个 MIP 网页 编写 MIP 网页代码 校验 MIP 网页 调试 MIP 网页 1. 初始化 MIP 配置 首先在html目录下进行初始化 MIP 配置&#xff1a; $ mip init 此时会创建mip.config文件&#xff1a; 2. 新建一个 MIP 网页 在mip-project/html文件夹下输入如下…

Nginx(五):动静分离

1、概念基础 Nginx动静分离简单来说就是把动态请求和静态请求分开&#xff0c;不能理解成只是单纯的把动态页面静态页面的物理分离。严格意义上说应该是动态请求跟静态请求的分开&#xff0c;可以理解成使用Nginx处理静态页面&#xff0c;Tomcat处理动态页面。动静分离从目前实…

Nginx(六):配置nginx高可用集群

我们知道在我们使用nginx代理多态tomcat服务器时&#xff0c;如果某台tomcat服务器发生宕机&#xff0c;那么nginx的分配机制可以自动将其剔除。但是如果发生了nginx的宕机状况&#xff0c;又该如何解决呢。 1、配置高可用的集群 1.1、什么是高可用 高可用HA&#xff08;Hig…

MIP开发教程(一) MIP-CLI工具安装与环境部署

依赖安装 安装 MIP-CLI 创建开发文件结构 1. 依赖安装 MIP-CLI 使用 NPM 安装&#xff0c;依赖 node 环境&#xff1a; node 安装-windowsnode 安装-mac MIP-CLI 开发组件需要 git&#xff1a; git 安装-windowsgit 安装-mac 2. 安装 MIP-CLI MIP-CLI&#xff1a;mip 开…