【软构博客】深入理解java中static和各类访问控制符的含义及使用

访问控制符

目的:是为了控制一个类的成员是否可以被其他类访问。
类型
Java中提供了3个访问控制符:private,protected,public。除了这三个访问级别外,还有一个不加任何访问控制符的访问控制级别(default),他们之间呈逐次增大的关系,具体如下:
在这里插入图片描述
下面我们对这四种访问级别逐个进行讨论:

  1. private (类访问权限)
    被它修饰限定的成员,其访问权限被限制在了成员所在的类的内部,即这个成员只能在当前类的内部被访问。

  2. default (包访问权限)
    被它修饰限定的成员(即不加任何的修饰限定符),其访问权限被限制在了成员所在的包的内部,即其可以被相同包下的其他类使用。

  3. protected (子类访问权限)
    被它修饰限定的成员在default的基础上添加被子类访问的功能,即既能够被同一个包内的其他类访问,还能够被其他包下的子类 访问。(这里的子类所继承的是用protected修饰的成员所在的类)

  4. public (公共访问权限)

被它修饰限定的成员能够被所有类访问,只要是一个工程下即可,不必在同一个包中,也不必要求具有父子继承关系。

使用:

  1. private:类中的成员变量,以及用于辅助实现该类的其他方法(工具方法)一般都用private进行修饰,从而起到信息隐藏的目的。
  2. protected:如果一个类主要用作其他类的父类,其中包含的大部分方法可能仅被其子类重写,而不想被外界直接调用,则用protected对其进行修饰。
  3. public:希望暴露给其他类自由调用的方法应该用public 对其进行修饰。比如:我们经常使用的构造器,为了能够在其他地方创建该类的实例,所以用public修饰。同样外部类为了能够被其他类自由调用,所以大部分外部类也采用public进行修饰。

static

含义:
static是将类的成员变成类 相关,而不是实例相关。用static 修饰的对象不属于外部类的某个对象,而是属于整个类,为整个类所共有。由于被static修饰的对象,被类所共有,所以可以采取类名直接进行引用,不必采取实例化对象之后利用实例进行引用的方式。

使用:

  • 由于引用比较简单,所以对于经常使用的方法或者变量,可以尝试用static修饰,之后直接用类名进行调用的方式。
  • 静态工厂模式来创建对象,如在接口的定义中,用静态工厂的方式来代替构造器的使用。

思考:外部类为什么不能用static、private、protected进行修饰?

  • static: static的作用是把类的成员变量由实例相关变成类相关,而外部类上一级程序单元是包,也即它并不包含于其他类中,所以不可使用static对其进行修饰。
  • private: 与static 同样的道理。private的作用是限定被修饰的对象只能在其定义所在的内部进行使用,而外部类不在任何类的内部,它的上一级程序单元是包,所以不可用private对其进行修饰。
  • protected: protected是将其修饰的成员对象,能够被其他包下的继承protected修饰对象所在类的子类进行使用。但是对于外部类而言,它不在任何类的内部,所以不能使用protected对其进行修饰。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值