Java修饰符部分规则

本文深入解析Java中的修饰符,包括访问修饰符如private、protected、public的使用规则,以及非访问修饰符如static、final、abstract等的适用场景。特别讨论了修饰符在类、接口、变量和方法上的应用限制及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 修饰符概念

  Java修饰符是Java关键字的一部分。

  根据修饰符本身能否控制访问权限分为访问修饰符和非访问修饰符两种。

  其中访问修饰符:private,protected,public(这里不算包权限修饰符,也不提访问修饰符的范围,主要讲关键字的作用)。使用时只能在private、protected、public以及包权限修饰符中四选一。

  非访问修饰符:static、final、transient、volatile、abstract、synchronized、native、strictfp、default(这里的deafult不是指缺省值,是一个真正的关键字,可以用来修饰接口中的方法)。根据实际修饰的对象可分为类修饰符、接口修饰符、变量修饰符、方法修饰符。

2. 访问修饰符规则

访问权限子类其他包
publicYYYY
protectYYYN(不含子类)
defaultYYN(不含同包)N
privateYNNN

3. 非访问修饰符规则

3.1 修饰外部类

  public、abstract、final、strictfp可以用来修饰外部类。
在这里插入图片描述
在这里插入图片描述
  其中不能同时使用abstract与final修饰外部类。abstract修饰的类不能实例化,需要被子类继承,才能实例化abstract的子类;而final修饰的类不能被继承,有冲突所以不能同时使用。

3.2 修饰内部类

  private、protected、public、abstract、final、static、strictfp可以用来修饰内部类。
在这里插入图片描述
  其中abstract与final不能同时修饰内部类,原因同外部类相同。

3.3 修饰接口

  public、abstract、strictfp可以用来修饰接口。
在这里插入图片描述
  其中使用abstract修饰接口在这里提示多余,是因为接口是本身就是一种极致的抽象类。

3.4 修饰变量

  private、protected、public、static、final、transient、volatile可以用来修饰变量。
在这里插入图片描述
  其中不能同时使用final和volatile修饰变量,因为final修饰的变量表示它是不可变的变量,而volatile修饰的变量表示它是一个易变的共享的变量。

3.5 修饰类中的方法

  private、protected、public、abstract、static、final、native、synchronized、strictfp、default可以用来修饰类中的方法。
在这里插入图片描述  其中private与final同时使用是多余的,因为private修饰方法表示方法私有,final修饰方法表示方法是不能被重写,private方法本身就是无法被重写的。
  static与final同时使用是多余的,因为static方法本质上是无法被重写的,子类的同名static方法与父类的方法没有关联,与final的语义有部分重合,但是final可以防止子类的同名的static方法。
  private不能与abstract同时使用,因为private方法是私有导致abstract方法无法被实现。
  static不能与abstract同时使用,因为abstract方法在当前类中无实现无法被类直接调用。
  native不能与abstract同时使用,因为native是将方法交由本地操作系统实现与abstract将方法交由子类实现冲突。
  synchronized不能与abstract同时使用,因为synchronized修饰实例方法时会持有this对象,而abstract方法所在类为抽象类无法被实例化,不会存在this对象。
  final不能与abstract同时使用,因为final方法不能被重载导致无法abstract方法无法被实现。
  strictfp不能与abstract同时使用。(原因未知,目前推测是strictfp只能修饰带有方法体的方法,即只能修饰在当前类中实现的方法,abstract方法是交由子类实现)。
  native不能与strictfp同时使用。(原因未知,目前推测是strictfp只能修饰带有方法体的方法,即只能修饰在当前类中实现的方法,native方法是交由本地操作系统实现)

3.6修饰接口方法

  public、abstract、static、default、strictfp修饰接口中的方法。
在这里插入图片描述
  其中接口方法默认为public abstract,再用public abstract修饰属于多余。
  其中strictfp不能单独修饰方法,原因与strictfp不能与abstract同时修饰方法相同。
  其中static和default不能同时修饰方法,原因未知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值