[学习笔记]Java修饰符

Java当中的修饰符可在定义类、方法或变量时放在语句前面作修饰。根据修饰符的用途,可将其分为访问修饰符和非访问修饰符。

访问控制修饰符

访问控制修饰符用于指明对类、方法/构造方法的访问权限;

Java有四种访问权控制修饰符:default、private、protected、public;

默认访问修饰符 – default

不使用任何关键字;

若类,接口,变量和方法声明时采用默认访问修饰符,则它们在同一包内可见;

接口内的变量隐式声明为public static final,方法的默认权限为public;

私有访问修饰符 – private

私有访问是最严格的访问权限,被声明为private的变量、构造方法、方法只能被所属类访问;

类(外部类)和接口不能声明为private;

声明为私有的变量只能通过类中的公共getter方法被外部类访问;

private可用于隐藏类的实现细节和保护类中的重要数据;

公共访问修饰符 – public

被public修饰的变量、方法、类、接口对所有类可见,即声明为public的变量、方法、类和接口能被任何其他类访问;

由于类的继承性,类中的所有public变量和方法都会被其子类继承;

受保护的访问修饰符 – protected

被声明为protected的变量、方法/构造方法能够被所在父类的子类或同一包内的所有子类访问;

protected不能用于修饰类(内部类除外);

访问控制的继承

父类中声明为public的方法在子类中也必须声明为public;

父类中声明为protected的方法在子类中只能声明为protected或public,不能声明为private;

父类中声明为private的方法不能被继承;

非访问修饰符

static修饰符 用于修饰类方法和类变量;

final修饰符 用于修饰类、方法和变量;final修饰的类不能被继承,修饰的方法不能被子类重写,修饰的变量为常量,值不能发生修改;

abstract修饰符 用于创建抽象类和抽象方法;

synchronized和volatile修饰符 主要用于对线程的修饰;

transient修饰符 预定义变量或类的数据类型;

static修饰符

静态变量:static修饰符可用于声明静态变量,无论类实例化了多少对象,始终只有一个静态变量,静态变量也叫作类变量;

局部变量不能被声明为static变量;

静态方法:static修饰符修饰的方法称为静态方法,静态方法不能使用类的非静态变量;

被修饰为静态的变量和方法可以直接使用ClassName.variableName和ClassName.methodName的形式进行访问;

final修饰符

final类:被final修饰的类不能够被继承;

final方法:被final修饰的方法可以被所在类的子类继承,但不能子类重写;

声明final方法的目的是防止方法的内容被修改;

final变量:被final修饰的变量一旦被赋值后便不能重新赋;

被final修饰的变量必须显式地指定初始值;

final修饰符通常与static修饰符一起用来创建常量;

abstract修饰符

抽象类:抽象类可以包含抽象方法和非抽象方法,抽象类不能实例化对象;

一个类不能同时被abstract和final修饰,如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则会出现错误;

抽象方法:只对方法进行定义,但没有具体的实现,方法的实现由继承类的子类进行;

抽象方法不能被声明为final和static;

任何继承了抽象类的子类必须实现父类当中的所有抽象方法,除非该子类也是抽象类;

抽象类可以不包含抽象方法,但如果一个类包含类抽象方法,那么该类必须被声明为抽象类;

抽象方法声明时以分号结尾;

synchronized修饰符

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

volatile修饰符

被volatile修饰的成员变量在每次被线程访问时,会强制从共享的内存中重新读取成员变量的值,当成员变量发生变化时会强制线程将变化值写到共享的内存中。因此,在任何时刻,两个不同的线程访问到的某个成员变量的值相同;

transient修饰符

序列化的对象包含被transient修饰的实例变量时,java虚拟机会跳过该特定变量;

transient修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型;

Original: https://www.cnblogs.com/cloudyzcy/p/13866457.html
Author: 糖小豆
Title: [学习笔记]Java修饰符

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713021/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • mmcblk0p0和sda1等等的含义

    一. mmcblk0p0 1.1. mmc含义 SD/MMC 卡的设&…

    技术杂谈 2023年6月1日
    060
  • find 命令常用解释

    背景色是:orange #### find命令 find * path: 所有搜索的目录以及其所有子目录。默认为当前目录 * expression: 所有搜索的文件的特征 * cm…

    技术杂谈 2023年7月10日
    072
  • 记录一下copy我博客的地址(捂脸)

    背景 今天又需要基于Spring扩展点做些事情,来看看自己之前记录的博客,好奇百度页面搜索了下看看能不能搜出我的文章,发现了熟悉的字眼和图片,发现完全就是自己的…. 有…

    技术杂谈 2023年7月25日
    068
  • 如何引用 System.Runtime.Serialization.Json;

    今天新开的一个项目突然发现引用System.Runtime.Serialization.Json 提示 命名空间 不存在类型或命名空间名称 json 明明前段时间刚开发的WCF是很…

    技术杂谈 2023年7月11日
    084
  • 用DirectX实现多视图渲染

    什么是多视图 一般的3D程序都只有一个视图,对应整个窗口的客户区。多视图就是在一个窗口中放置多个视图,以便从不同的角度观察模型或者场景。很多图形软件都有这个功能,比如大家熟知的3D…

    技术杂谈 2023年5月31日
    062
  • gauss杀进程

    1)查询当前所有连接的状态 select datname,pid,application_name,state from pg_stat_activity; 2)关闭当前state…

    技术杂谈 2023年7月24日
    074
  • 还有人不懂布隆过滤器吗?

    还有人不懂布隆过滤器吗? 1.介绍 我们在使用缓存的时候都会不可避免的考虑到如何应对 缓存雪&#x5D29…

    技术杂谈 2023年6月21日
    094
  • UML

    posted on2022-06-13 17:28 莫水千流 阅读(18 ) 评论() 编辑 Original: https://www.cnblogs.com/zhoug2020…

    技术杂谈 2023年6月1日
    0101
  • 「笔记」折半搜索(MeetintheMiddle)

    先搜索前一半的状态,再搜索后一半的状态,再记录两边状态相结合的答案。 暴力搜索的时间复杂度通常是 (O(2^{n})) 级别的。但折半搜索可以将时间复杂度降到 (O(2 \time…

    技术杂谈 2023年7月24日
    064
  • cmake:善用find_package()提高效率暨查找JNI支持

    cmake提供了很多实用的cmake-modules,通过find_package()命令调用这些modules,用于写CMakeLists.txt脚本时方便的查找依赖的库或其他编…

    技术杂谈 2023年5月30日
    092
  • 2022.21 Web页面和本地程序通信的方法

    因为安全限制,web页面不能直接操作本地电脑资源,因此一些访问本地文件或操作本地设备之类的操作需要客户端本地程序来做,这就涉及到web页面与客户端电脑本地程序通信交互。 以前主流浏…

    技术杂谈 2023年5月30日
    084
  • 【大厂面试必备系列】滑动窗口协议

    引言 想象一下这个场景:主机 A 一直向主机 B 发送数据,不考虑主机 B 的接收能力,则可能导致主机 B 的接收缓冲区满了而无法再接收数据,从而导致大量的数据丢包,引发重传机制。…

    技术杂谈 2023年7月24日
    058
  • 几款树莓派4B外壳散热器对比测评推荐

    几款树莓派4B外壳散热器对比测评推荐 树莓派 背景故事 相信很多朋友新入手树莓派后,会有2个疑问:1.是否需要增加散热?2.应该用什么样的方式散热?下面一一解答一下。 是否需要散热…

    技术杂谈 2023年7月23日
    081
  • 1. Two Sum——LeetCode

    Given an array of integers, return indices of the two numbers such that they add up to a s…

    技术杂谈 2023年6月21日
    089
  • 自己动手写线程池——向JDK线程池进发

    自己动手写线程池——向JDK线程池进发 前言 在前面的文章自己动手写乞丐版线程池中,我们写了一个非常简单的线程池实现,这个只是一个非常简单的实现,在本篇文章当中我们将要实现一个和J…

    技术杂谈 2023年7月23日
    082
  • KestrelServer详解[3]: 自定义一个迷你版的KestrelServer

    和所有的服务器一样,KestrelServer最终需要解决的是网络传输的问题。在《网络连接的创建》,我们介绍了KestrelServer如何利用连接接听器的建立网络连接,并再次基础…

    技术杂谈 2023年5月30日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球