Java修饰符

本文主要讲解Java中的访问控制修饰符与访问权限。

1 概述

在Java中有很多的修饰符,主要分为以下两类:

  • 访问控制修饰符 : default, public , protected, private
  • 非访问控制修饰符 : final, abstract, static, synchronized,transient …

修饰符用来定义类、方法或者变量,通常放在语句的最前端。
在此我们只讲述访问控制修饰符。

2 访问控制修饰符

Java中,可以使用访问控制修饰符来控制对类、变量、方法和构造方法的访问。为什么会需要这样的修饰符来限制不同情况下的访问权限呢?让我们举例说明:
比如我有不同的事,其中A我随时可以将它对外公布;B可能是关于我家族内部的事,只有家族中的人可以知道;C则是我家庭内部的事,只有我的家人能知道;最后是D,这是我的私事,只有我知道,连我的孙女也不能知道。
也正是因此,我们通过修饰符可以保证在不同情况下对不同类、对象、方法和构造方法访问的安全。

Java 支持 4 种不同的访问权限:

  • public(公有权限) : 对所有类可见。使用对象:类、接口、变量、方法。
  • protected (保护权限): 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰外部类。
  • default (友好权限): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  • private (私有权限): 在同一类内可见。使用对象:变量、方法。 注意:不能修饰外部类

在这里插入图片描述

注: 外部类是一个相对内部类的概念。如果一个类中嵌套了另外一个类,我们就把这个类叫做外部类。

我们可以通过下表来说明访问权限:

在这里插入图片描述

这些修饰符的可见性按下面的顺序递增:

在这里插入图片描述

2.1 共有访问修饰符-public

被 public 修饰的类、方法、构造方法和接口能够被任何其他类访问。
需要注意的是,如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。

在这里插入图片描述

我们可以注意到,我们的main方法都是使用了共有访问控制。

public static void main(String[] args){
   
	......
}

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

2.2 受保护的访问修饰符-protected

事实上,大多数时候我们对protected介绍的比较简单,基本都是一句话,就是:被proteted修饰的成员对于本包和其子类可见。但实际上,protected的可见性在于两点:

  • 父类的protected成员是包内可见的,并且对子类可见;
  • 若子类和父类不在同一包中,那么在子类中,子类的实例可以访问其从父类继承的protected方法,但不能访问父类实例的protected方法。

对于涉及protected成员的调用时,我们首先应当确定这个protected成员来源于哪里,其可见性范围是什么,由此可以判断出当前的用法是否恰当。
我们通过两个例子来进行讲解。

package PackeageA;

public class A {
   
	protected void f() {
   }	//	父类A中的protected方法
}
package PackeageA;
public class A1 extends A{
   }
package PackeageA;
public class A2 extends A{
   }
package PackeageA;

public class ATest {
   
	public static void main
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值