java修饰符的总结

摘要:
每个Java程序都有一个且只有一个公共类,称为主类。其他外部类没有访问控制修饰符,并且具有包可访问性。抽象类修饰符Abstract:用抽象修饰符修改的类称为抽象类。被private修饰符限制为private的所有方法以及final类(final类)中包含的所有方法都被视为final方法。使用修饰符protected的主要功能是允许其他包中的子类访问父类的特定属性。通常volatile用于修饰接受外部输入的域。

引言:Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分  b、允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员

1. 类修饰符
访问修饰符:公共类修饰符public
非访问控制符:抽象类修饰符 abstract 、最终类修饰符 final
(1)公共类修饰符 public : Java 语言中类的访问控制符只有 public 即公共的。每个 Java 程序的有且只有一个类是 public,它被称
为主类 ,其他外部类无访问控制修饰符,具有包访问性。注意:一个类的内部类可以被其他访问控制修饰符protected、default、
private修饰,相当于类的成员。
     (2)抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。
     (3)最终类修饰符 final :当一个类不能被继承时可用修饰符 final修饰为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某
种标准功能的类。
     (4)类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。
这一访问特性又称为包访问性。

2.方法修饰符
访问控制修饰符:公共访问控制符public、保护访问控制符protected、缺省默认default、私有访问控制符private
非访问控制符:抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、
同步方法控制符synchronized
  (1)抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和操作实现。
      (2)静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static 修饰、限定
的方法是属于某个具体类对象的方法。 由于 static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理
属于整个类的成员变量,即 static 方法只能处理 static的域。
      (3)最终方法控制符 final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆
盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被
private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类) 中的方法,都被认为是最终方法。
      (4)本地方法控制符 native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的
方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。
      (5)同步方法控制符 synchronized :该修饰符主要用于多线程程序中的协调和同步。
3.变量修饰符
访问控制符:公共访问控制符public 、保护访问控制符protected 、缺省默认访问控制符default、私有访问控制符private
非访问控制符:静态域修饰符static 、最终域修饰符 final 、易失 ( 共享 ) 域修饰符volatile 、暂时性域修饰符transient
(1)公共访问控制符 public :用 public 修饰的域称为公共域。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减
少 public 域的使用。
      (2)私有访问控制符 private : 用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。
      (3)保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②同一个包中的其它类;③其它包中
的子类。使用修饰符 protected 的主要作用是允许其它包中的子类来访问父类的特定属性。
      (4) 缺省默认修饰符 :没有访问控制修饰符或用修饰符 default修饰的成员变量可以被该类本身或同一包中的其他类访问。
      (5)静态域修饰符 static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内
存区域的公共存储单元,而不是保存在某一个对象的内存区间。该类的任一对象访问它时取到的都是相同的数据;该类的任一对象修改
它时 , 也都是对同一个内存单元进行操作。
      (6)最终域修饰符 final :最终域修饰符 final 是用来定义常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序
的整个执行过程中都是不变的。
      (7)易失 ( 共享 ) 域修饰符 volatile :易失 ( 共享 ) 域修饰符 volatile是用来说明这个成员变量可能被几个线程所控制和修改。也就是说
在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。通常 volatile 用来修饰接受外部输入的域
      (8)暂时性域修饰符 transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符transient 限定的暂时性变
量,将指定 Java虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一
部分,存储对象时必须同时保存这些变量。
4.访问控制修饰符的总结

---------------------
作者:老鼠只爱大米
来源:CSDN
原文:https://blog.csdn.net/u012723673/article/details/80613557

免责声明:文章转载自《java修饰符的总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇插入格式|分章节显示参考文献|修改参考文献格式动手学深度学习13-权重衰减下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PL/pgSQL学习笔记之四

http://www.postgresql.org/docs/9.1/static/plpgsql-structure.html 39.2. PL/pgSQL 的结构 PL/pgSQL是一种块式结构的语言。完整的函数定义必须是一个块。一个块的定义形式如下: [<<label>> ] [DECLARE declaratio...

第16本:《视觉繁美:信息可视化方法与案例解析》

第16本:《视觉繁美:信息可视化方法与案例解析》 阅读加写笔记大概用了6个小时。《视觉繁美》是从权哥的QQ上发现的,看到一堆超炫超 复杂的图形,就马上动手从amazon上买了下来。第一天粗翻一遍,确实是非常多、非常复杂的网络图,如果不是搞艺术设计的,真不知道这本书有什么用,但 第二天开始仔细阅读,发现前三章还是相当有料,从树状模型开始,过渡到网络模型,然...

03-cmake语法-变量,字符串

CMake的基本数据类型是字符串(不区分大小写),一组字符串在一起称为列表(list)。 条件判断中的取值情况如下表: 真 1, ON, YES, TRUE, Y, 非0的数 假 0, OFF, NO, FALSE, N, IGNORE, 空字符串,以“-NOTFOUND”结尾的字符串 变量显式定义 set(VAR a b c) # 输出 V...

grafana配置告警

首先,进入grafana控制面板,选择需要监控指标的区域,然后点击编辑 此时进入Alert页面会发现提示 Template variables are not supported in alert queries 这是因为json文件中有一些变量,而变量是无法用来作为alert的指标的。 将变量替换为具体的值 替换后的结果如下 然后新增Notificati...

Java常考面试题

Java常考面试题,整理自牛客网和程序员面试宝典,有的题不太好。 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自...

sql基础内容2

-- day16课程内容 --CREATE DATABASE day16;USE day16; -- *************一、数据约束********************------ 1.1 默认值CREATE TABLE student( id INT, NAME VARCHAR(20), address VARCHAR(20) DEFAULT...