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

1、访问修饰符

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

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

以下是访问权限的一个表

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

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修饰符。

JAVA知识基础(三):修饰符相关推荐

  1. Java get set6_Java oop 的题与答案6:使用程序模拟英雄金币数,get与set知识,访问修饰符(有图)...

    //使用程序模拟英雄金币数,使用构造函数设置默认值为300,设置set方法可以给每个用户增进金币, //get获取每个用户的金币数,定义静态变量统计总金币数,创建5个对象,并赋值, //保存到数组了, ...

  2. 【Scala教程】如何在已掌握的Java知识基础上快速上手Scala?【个人学习记录】

    如何在已掌握的Java知识基础上学习Scala 前言 正文开始! 1. 编译运行 2. 声明变量 3. 输出 4. 显式指定变量类型 5. 范围区间 6. 写入文本文件 7. 读取文本文件 8. if ...

  3. 实际上Java注解与普通修饰符(public、static、void等)的使用方式并没有多大区别

    Java 注解 实际上Java注解与普通修饰符(public.static.void等)的使用方式并没有多大区别 注解的定义 日常开发中新建Java类,我们使用class.interface比较多,而 ...

  4. Java常见的各种修饰符

    Java常见的各种修饰符 目录 Java常见的各种修饰符 修饰符的分类 一.访问权限修饰符 二.非访问权限修饰符 修饰符的使用 一.类修饰符 1.外部类修饰符 2.内部类修饰符 二.方法修饰符 三.变 ...

  5. java中的访问修饰符

    对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符. 一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口.Java语 ...

  6. java修饰方法有哪些,探讨Java语言中那些修饰符

    一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...

  7. [.net基础]访问修饰符

    标题:[.net基础]访问修饰符 一.前言 基础掌握不牢固啊,所以记录下来. 二.方法访问修饰符Internal (1).创建工程ParentAndSon (2).添加类ModelA namespac ...

  8. Java final修饰符的作用,Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  9. [转载] 基本概念:java中的访问修饰符

    参考链接: Java中类或接口的访问说明符 转自:https://www.cnblogs.com/tjudzj/p/4443066.html 对Java中的修饰符一直记不住,现在结合网上的一些资料进行 ...

最新文章

  1. hashmap value可以为空吗_美团面试题:Hashmap结构,1.7和1.8有哪些区别(最详细解析)...
  2. 数据库:B+树索引和Hash索引得区别
  3. html超过高度的没显示,CSS 设置的高度超出屏幕高度为什么没出现滚动条?
  4. java并发编程之线程的生命周期详解
  5. C语言中如何衡量算法的正确性,从C语言的角度重构数据结构系列(二)-如何衡量一个算法的优劣?...
  6. 操作系统概念第六章部分作业题答案
  7. Office Word 之画肘形箭头
  8. 基于aspect的情感分析综述 论文翻译笔记 A Survey on Aspect-Based Sentiment Analysis: Tasks, Methods, and Challenges
  9. 企业微信异常java.security.InvalidKeyException:illegal Key Size的解决方案,提供jce_policy-8下载
  10. Java的随机数原理
  11. python3下的webpy运行详解——webpy,session,cookie
  12. 云服务器选股,【图】老师们能不能在通达信7.48中整合云行情服务器?_选股公式,股票,炒股公式,股票指标,股票论坛_股票软件技术交流论坛_理想论坛 - 股票论坛...
  13. 四川一度智信:网店养词技巧
  14. 天轰川 推荐的Javscript大收集 大集锦
  15. DBA之路:小小DBA一年工作总结
  16. 纯干货:docker可视化管理界面
  17. redolog 、undolog 和binlog
  18. 计算机应用基础0006 19春在线作业1,《计算机应用基础0006》19春在线作业1 为了实现自动控制处理 需要计算机具有的基础条件是...
  19. 让传说中的“WPS彩蛋”现形(转)
  20. MybatisPlus入门(涉及大部分常用操作)

热门文章

  1. python open函数参数newline_Python open() 函数
  2. 睡眠周期时长测试软件,“智能时钟”测睡眠周期 最佳时候叫醒你
  3. 深圳市南山区学计算机的视频课程,新手学电脑全套视频教程(1-27集)
  4. qt设置鼠标追踪后,鼠标还是需要点击后才能变样式
  5. BugkuCTF-MISC题细心的大象
  6. 和氟西汀类似的备注_撒狗粮:可爱又霸气的给男朋友的微信备注
  7. 如何备份数据_如何通过归档、备份和灾难恢复实现多云数据保护
  8. Linux中fdisk对应的c函数,linux下fdisk命令实战案例之详解
  9. 计算机二级vb2003年4月考试题,2003年4月全国计算机等级考试二级vb笔试真题附答案...
  10. python staticmethod有什么意义_关于静态方法:python中的@staticmethod有什么意义?