一、是哪四种访问权限修饰符呢?

public > protected > [default] > private

(公共的 ) (受保护的) (默认的) (私有的)

二、简单认识四种访问修饰符

1、public权限修饰符

public——可以修饰类,方法,构造方法,接口,方法成员。

被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。

如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。

由于类的继承性,类所有的公有方法和变量都能被其子类继承。


注意: Java 程序的 main() 方法必须设置成公有的(public),否则,Java 解释器将不能运行该类。

2、protected权限修饰符

protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。

子类与基类在同一包中 :被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问

子类与基类不在同一包中 :那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。

注意:protected权限修饰符是一种难以理解的权限修饰符,建议可以深入了解,下面一篇文章是菜鸟教程中的内容: Java protected 关键字详解: https://www.runoob.com/w3cnote/java-protected-keyword-detailed-explanation.html


3、[default]权限修饰符

使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final ,而接口里的方法默认情况下访问权限为 public

写上“[]”这种符号,是为了表示这种修饰符可以省略不写!


4、private权限修饰符

私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private

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

Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。


三、再次认识及运用技巧

注:图片来源网络,如侵权,联系删!

技巧:

区别 public protected [default] private
同一个类中 可以访问 可以访问 可以访问 可以访问
同一个包中 可以访问 可以访问 可以访问 不可以
不同包的子类 可以访问 可以访问 不可以 不可以
不同包的非子类 可以访问 不可以 不可以 不可以


四、是哪六种非访问修饰符呢?

static

(静态的)
abstract

(抽象的)
final

(最终的)
synchronized

(同步的)
volatile

(异变的)
transient

(短暂的)

五、简单认识六种非访问修饰符

1、static

静态变量:

static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。

静态方法:

static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

静态代码块

静态代码块在类加载时只执行一次。先与构造函数执行


2、abstract

抽象类:

抽象类 不能用来实例化对象 ,声明抽象类的唯一目的是为了将来对该类进行扩充。

一个类不能同时被 abstract 和 final 修饰

如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

抽象类可以包含抽象方法和非抽象方法。

抽象方法

抽象方法是一种 没有任何实现的方法 ,该方法的的 具体实现由子类提供。

抽象方法不能被声明成 final 和 static。

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

如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。

抽象方法的声明以分号结尾 ,例如: public abstract sample();

提供限制来不实例化抽象类,这样就需要任何使用该抽象类的人来实现它,并提供多态性。


3、final

final 类不能被继承,没有类能够继承 final 类的任何特性。

final类不能被继承。

final变量一旦被赋值就不能被改变。

final方法不能被重写( 可以被重载 )。

注意:

对于 引用类型 来说,“不可变”说的是 地址值不可变

对于基本类型来说,“不可变”说的是数据不可变


4、synchronized 修饰符

synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。

注:图片来源网络,如侵权,联系删!


5、 transient 修饰符

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

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


6、volatile 修饰符

volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。

而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

一个 volatile 对象引用可能是 null。

以下内容来自 https://blog.csdn.net/J080624/article/details/78258121

volatile和synchronize之间的区别:

volatile关键字只用来在线程内存和主内存之间同步单个变量值,synchronized关键字用来同步线程内存和主内存之间的所有变量值以及如何锁定和释放一个监视器。synchronized比volatile有着更大的开销。

volatile变量不允许出现和当前主存中的数据值不同的的本地副本。

更准确地说,被声明为volatile的变量必须保证它的数据值在所有线程的中是同步的。也就是当你在任一线程中访问或者更新一个变量时,所有其它线程能够立即访问到相同的值。



最后

学习还是得反复(像和我一样的“笨鸟”,不仅要先飞,还要成功的返回!)

在暑假的这几天发现有点愧对首页的那句话:

苟有恒,何必三更眠五更醒。最无益,莫过一日曝十日寒!

感觉学着学着学不动了,也产生了厌倦感。

但是,这样下去肯定是给自己挖坑的,还是要卯足了劲 , 继续学习路程。还有,如果有看到我这篇笔记并且和我一样前行的人, 在此送一句话, 以共勉!

“有的人说,我们这个时代不缺机会,所以也势必会让每个人面临很多选择,那么,是遵从自己的内心,还是随波逐流;是直面挑战还是落荒而逃;是选择喧嚣一时的功利,还是恒久平静的善良;无论如何,希望每个人,都能做出一个在日后回想不让自己后悔的选择。”

Java中的四种权限修饰符及六种非访问修饰符(简识)的更多相关文章

  1. JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)

    1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws ...

  2. Java 中的四种权限修饰符

    * * private: * Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”. * 被其修饰的属性以及方法只能被该类的对象 访问,其子类不能访问,更不能允许跨包访问. * * def ...

  3. Java中的四种权限修饰符

    权限修饰符   public protected [default] private 同一个类 YES YES YES YES 同一个包 YES YES YES NO 不同包子类 YES YES NO ...

  4. java中的四种权限

    1.私有权限(private) private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类).被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用. ...

  5. JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

    简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用) ...

  6. Java中的四种引用

    引用定义 实际上,Java中存在四种引用,它们由强到弱依次是:强引用.软引用.弱引用.虚引用.下面我们简单介绍下这四种引用: 强引用(Strong Reference):通常我们通过new来创建一个新 ...

  7. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  8. Java中的四种内部类

    Java中有四种内部类: 成员内部类:定义在另一个类(外部类)的内部,而且与成员属性和方法平级,故称成员内部类.类比于外部类的非静态方法,如果用static修饰就变成了静态内部类 静态内部类:使用st ...

  9. java中的四种内部类使用(1)

    内部类 (一) 概述 把类定义在另一个类的内部,该类就被称为内部类. 举例:把类Inner定义在类Outer中,类Inner就被称为内部类. class Outer { class Inner { } ...

随机推荐

  1. 【转】Kubernetes scheduler学习笔记

    简介 Kubernetes是一个强大的编排工具,可以用来很方便的管理许多台机器,为了使机器的资源利用率提高,同时也尽可能的把压力分摊到各个机器上,这个职责就是由scheduler来完成的. Kuber ...

  2. code magic

    code magic CI/CD for mobile app projects https://codemagic.io https://codemagic.io/apps flutter http ...

  3. css命名规范和书写规范

    1.位置属性(position, top, right, z-index, display, float等)2.大小(width, height, padding, margin)3.文字系列(fon ...

  4. 黑马来袭!NGK生态所二月上线!

    日前,加密货币交易所Coinbase Global Inc,向美国证券交易委员会申请首次公开募股,成为首家公开上市的加密货币交易所."Coinbase上市,给行业带来更多的是信心.让大家看到 ...

  5. H5 常见问题汇总及解决方案

    原文链接:http://mp.weixin.qq.com/s/JVUpsz9QHsNV0_7U-3HCMg H5 项目常见问题汇总及解决方案 -- 由钟平勇分享 转自 https://github.c ...

  6. Java开发的得力助手---Guava

    导语 guava是google出品的java类库,被google广泛用于内部项目,该类库经过google大牛们的千锤百炼,以优雅的设计在java世界流行.版本迭代至今,很多思想甚至被JDK标准库借鉴, ...

  7. springCloud中的注册中心Nacos

    springCloud中的注册中心Nacos 三个模块: 1.注册中心 2.服务提供者(生产者) 提供服务 3.服务消费者(消费者)调用服务 流程:消费者和生产者都要向注册中心注册,注册的是二者中服务 ...

  8. 腾讯云Centos7.6开放端口及配置腾讯云安全组

    1:防火墙的开启.关闭.状态查询.设置开机自启.开机禁用命令 检查状态(1):firewall-cmd --state 检查状态(2):systemctl status firewalld.servi ...

  9. Java基础语法:类型转换

    由于Java是强类型语言,所以有时候在进行运算时,需要用到类型转换. 整型.常量.字符类型数据可以混合运算. 运算中,不同类型的数据先转化为同一类型,然后再进行运算. 类型转换等级有低级到高级的划分, ...

  10. WPF -- 一种圆形识别方案

    本文介绍一种圆形的识别方案. 识别流程 判断是否为封闭图形: 根据圆的方程,取输入点集中的1/6.3/6.5/6处的三个点,求得圆的方程,获取圆心及半径: 取点集中的部分点,计算点到圆心的距离与半径的 ...