clover java_Java那些事(一)——访问级别修饰符

Java那点事-访问级别修饰符

注:本文讨论的所有情况没有考虑嵌套类。

Java的访问级别修饰符(Access Level Modifiers)有四种,按照可访问范围的大小排列,如下表所示(虽然官方文档也有,但是老夫知道泥萌是不会去看的_(:з)∠)_):

表格的横行列举的是四个访问范围。

修饰符

中文含义

类(class)

包(package)

子类(subclass)

所有类(world)

public

公有

protected

保护

×

缺省

×

×

private

私有

×

×

×

注1:缺省情况,在oracle官方文档里也被叫做package-private,我们可以理解为包-私有。

注2:为何所有类不用All Class,因为文档里就是这么写的= ̄ω ̄=。

老夫简单的介绍public、private和package-private这三种情况,重点介绍protected。

public这种访问级别是范围最大的,当泥萌使用该修饰符修饰类的成员的时候,代表该成员可以被所有类访问,即整个项目下都是可以访问的。

private与public恰好相反,它是整个访问级别中范围最小的,使用它修饰类的成员的时候,该成员只能够被该类内部访问,外部是无法访问到的。

package-private这种情况,在泥萌没有使用其他三种访问级别时生效。该修饰符所控制的范围最大是同一个包,也就是说,被修饰的成员在只需同一个包下即可被访问。

protected这种访问级别比较特殊,因为它还包含了子类也可以访问的这种情况,子类这种情况分为两种,一种是在同一个包下的子类,另一种是在不同包下的子类,这两种情况,访问被protected修饰的成员方式是不同的(这是本文今天的重点)。

直接来看代码,一目了然,代码清单如下:

项目部分包的目录结构

af931dc235b7e44d2d12b7b25ddbab1f.png

parent.java

package com.smallclover.pack1;

public class Parent {

protected void parent() {

}

}

Child.java(与父类在同一个包下)

package com.smallclover.pack1;

public class Child extends Parent{

public void child() {

Parent p = new Parent();

p.parent();//通过父类来访问

Child c = new Child();

c.parent();//通过子类来访问

}

}

Child.java(与父类在不同包下)

package com.smallclover.pack2;

import com.smallclover.pack1.Parent;

public class Child extends Parent{

public void child() {

Child c = new Child();

c.parent();//只能通过子类来访问

}

}

未完待续(~o( =∩ω∩= )m)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值