java 修饰符 连用_Java中的修饰符汇总(比较全)

说明

这里将java中包含的几乎全部修饰符的作用进行汇总,如果有错误,请批评指正,谢谢。

修饰符分类

Java中提供了很多修饰符,总的来说分为两大类: 访问权限修饰符和非访问权限修饰符。

访问权限修饰符

在Java里面一共包含4种访问权限修饰符,分别是:1、private:私有的;2、默认;3、protected:受保护的;4、public:公共的。

其中,private:只允许在本类范围中进行访问,离开了当前类就不允许访问;

默认: 允许在当前类,同包子类/非子类都可调用,跨包子类/非子类都不允许;

protected:允许在当前类,同包中的子类/非子类都可以以及跨包子类调用。跨包的非子类不允许调用。

public:允许在任意位置访问。

按照前面的顺序,自上而下,访问范围越来越大;自下而上,限制能力越来越强:

(同包包括同包子类与非子类;子类包括同包子类和跨包子类)

这里推荐大家一句口诀:pmpp,本同子其。

非访问权限修饰符

1、static 修饰符,用来创建类方法和类变量。

2、final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

3、abstract 修饰符,用来创建抽象类和抽象方法。

4、synchronized 用于多线程的同步。

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

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

局部变量修饰符

局部变量只能由final 来修饰。

其实局部变量不能赋予权限修饰符的? 为什么这么说呢,那是因为局部变量的生命周期是一个方法的调用期,因此没必要为其设置权限访问字段。因为你既然能访问到这个方法,就没有必要再为其方法内的变量赋予访问权限了,这完全就是多此一举。再者该变量在方法调用期间已经被加载进了虚拟机栈,说白了就是它肯定能被当前线程访问到,所以你没必要设置它。

还有为什么局部变量不能用static修饰呢?哈哈,你肯定也想到了,因为静态变量是在方法之前先加载,所以如果在方法内设置了静态变量,可想而知,连方法都没加载,方法内的静态变量你能加载成功么?

接口

对于接口而言,其修饰符只能用public、default和abstract, 不能用final、static修饰。接口默认修饰为abstract。

接口中方法修饰符

只能使用public和abstract,默认也是public abstract。 需要说明的是:自Java1.8以后,接口允许定义静态方法,也就是说你可以用static来修饰接口中的方法了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值