Java四种访问权限限制

一、Java中有四种访问权限,private、default(一般省略)、public、protected。

private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”(package private)。该模式下,只允许在同一个包中进行访问。
protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护访问权限”。被其修饰的属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包访问。
这里需要注意的是,所谓的访问,可以分为两种不同方式:第一,通过对象实例访问;第二,直接访问。 
比如说,某父类protected权限的成员,子类是可以直接访问的,换一种说话是子类其实继承了父类的除了private成员外的所有成员,包括protected成员,所以与其说是子类访问了父类的protected成员,不如说子类访问了自己的从父类继承来的protected成员。另一方面,如果该子类与父类不在同一个包里,那么通过父类的对象实例是不能访问父类的protected成员的。

二、下面用表格来展示四种修饰符的访问权限范围:


三、举个栗子

在Eclipse中新建个类,四个类的结构如下,Aclass 和Bclass 是同包的类,Cclass 和Dclass是同包的类,Cclass 继承了Aclass。 
 
Aclass类的定义如下,有四个成员变量,权限分别为private、default、protected、public。四个成员方法,权限分别为 private、default、protected、public。 


Bclass类定义如下,它和Aclass类同属于 test1包 ,在里面定义了一个成员方法show(),该方法通过两种方法对Aclass类的所有成员进行了访问,第一方法通过实例化一个Aclass类对象aa对成员变量及方法进行访问,第二种是直接访问Aclass中的成员。通过IDE的自动检测报错,可以看出,Bclass类是不能直接访问Aclass类的成员的,但通过对象的方法可以访问default权限以下(default、protected、public)的成员。 


Cclass类定义如下,它和Aclass类属于不同的包,但是Cclass继承了Aclass ,在里面定义了一个成员方法show(),该方法同样通过两种方法对Aclass类的所有成员进行了访问,第一方法通过实例化一个Aclass类对象aa对成员变量及方法进行访问,第二种是直接访问Aclass中的成员。通过IDE的自动检测报错,可以看出,Cclass类是可以直接访问Aclass类权限为protected、public的成员(因为子类的缘故),但通过对象的方法只能访问 public权限的成员(因为Cclass和Aclass不同包)。 


Dclass类定义如下,它是Aclass类不同包的一般类,在里面定义了一个成员方法show(),该方法同样通过两种方法对Aclass类的所有成员进行了访问,第一方法通过实例化一个Aclass类对象aa对成员变量及方法进行访问,第二种是直接访问Aclass中的成员。通过IDE的自动检测报错,可以看出,Dclass类是不可以直接访问Aclass类的成员(因为不是子类的缘故),但通过对象的方法只能访问 public权限的成员(因为class和Aclass不同包)。

四、总结语

以上栗子,对JAVA语言种4种访问权限做了简单的探讨,这就是我对它们的理解。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值