Java修饰符

目录

引言

外部类、内部类、成员变量、方法各自可以使用的修饰符

外部类

内部类

成员变量

方法

小结

访问控制符

总结


引言

忽然有些被Java中的各种修饰符搞晕了:哪些是用于成员、哪些是用于类、各自的作用是啥等等。之前好几次遇到这些问题都是跑去重新翻书,今天就自行总结一下。

外部类、内部类、成员变量、方法各自可以使用的修饰符

外部类

public:描述访问权限。表示这是一个公共类,全局范围内皆可访问。顺便说一下,外部类只有两种访问控制级别:public和默认。

final:定义不可变类。表示该类不可被继承,可以和public同时存在

abstract:定义抽象类。抽象类就是用来被继承的,所以该修饰符不能和final同时存在

不用修饰符:从访问权限的角度——属于包访问权限,即可以被相同包下的其他类访问;从特殊性的角度——没有任何特殊性。

内部类

内部类比外部类可以多使用3个修饰符:private、protected、static。因为其属于外部类成员,也就具有了成员的属性。此处仅简单介绍。

成员变量

private、protected、public:描述访问权限,下文有章节详述。显然三者不能同时存在。

static:描述成员变量是实例变量(非静态变量)or类变量(静态变量)。

final:定义不可变量,即不能被二次赋值。

方法

private、protected、public:描述访问权限。

static:描述方法是实例方法(非静态方法)or类方法(静态方法)。

final:定义final方法,表示该方法不可被重写父类与子类之间的操作),但依旧可以被重载(同一类中的操作)。

abstract:定义抽象方法,无方法体,由继承其所在抽象类的子类提供实现(即重写)。显然abstract和final不能同时存在。

小结

无论是类层面还是方法层面,abstract和final都不能同时存在。

访问控制符

这一部分是封装的内容,重温一下封装的定义:将对象的状态信息隐藏在状态内部,不允许外部程序直接访问对象的内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。“隐藏”的程度就和访问控制符的选择有直接关系。

Java提供了3个访问控制符:private、protected、public,4个访问控制级别(还有一个对应于无访问控制符,即default级别):

  1. private(当前类访问权限):用于类的成员;
  2. default(包访问权限):用于类的成员或者一个外部类;
  3. protected(子类访问权限):用于类的成员;
  4. public(公共访问权限):用于类的成员或者一个外部类。
表1 访问控制级别表
 privatedefaultprotectedpublic
同一类中
同一包中 
子类中  
全局范围内   

具体介绍我就略去,大家也很容易找到,唯二想说明的——

第一点:protected的访问权限是比default要宽松的。一开始我其实不是很理解,因为从字面上protected似乎都要更加难以访问一些。

default修饰的成员或者外部类可以被相同包下的其他类访问;protected修饰的成员可以被相同包下的其他类访问(这里是等同于default权限的),也可以被不同包中的子类访问(这是比default多出来的权限)。所以protected权限更加宽松。

第二点:外部类只有两种访问控制级别:public修饰的当前类访问权限、默认的包访问权限。因为外部类没有处于任何类的内部,所以也就没有其所在类的内部(对应private修饰权限)、所在类的子类(对应protected修饰权限)两个范围。

总结

起初容易搞混归根结底还是没有记清楚每个修饰符的作用,清除了作用就知道哪些可以同时存在哪些不可以,是用于控制访问权限还是其他。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值