Java中不写作用域修饰符时方法、字段的作用域

课程实验过程中,遇到了缺省作用域修饰符的变量无法被外部访问的问题。当时和老师同学讨论没有结果,自己动手行进行了验证。

结论:和protected关键字修饰的变量、方法一致。

例子

如图,编写一个java项目,类F与类A、C在同一package中,与类B在不同package中。

package com.a;

public class F {
    int n;
    public int nPublic;
    protected int nProtected;
    private int nPrivate;

    void func(){}
    public void funcPublic(){}
    protected void funcProtected(){}
    private void funcPrivate(){}
}

编写在F中编写public,private,protected,不写修饰符的方法、变量各四个;

编写类A,B,C:C继承F,A与F在一个package中,B与F不在一个package中。

package com.a;

public class C extends F{
    public void get(){
        super.func();
        super.funcProtected();
        super.funcPublic();
        super.funcPrivate();

        int n;
        n=super.n;
        n=super.nProtected;
        n=super.nPublic;
        n=super.nPrivate;
    }
}

package com.a;

public class A {
    F f;
    public void get(){
        f.func();
        f.funcProtected();
        f.funcPublic();
        f.funcPrivate();

        int n;
        n=f.n;
        n=f.nPublic;
        n=f.nProtect;
        n=f.nPrivate;
    }
}

package com.b;

import com.a.F;

public class B {
    F f;
    public void get(){
        f.func();
        f.funcProtected();
        f.funcPublic();
        f.funcPrivate();

        int n;
        n=f.n;
        n=f.nPublic;
        n=f.nProtect;
        n=f.nPrivate;
    }
}

逐一分析结果:

类C是类F的子类,不写修饰符的变量、方法可以被C使用;
类A和类F在同一个包下,不写修饰符的变量、方法都被A使用;
类B和类F不再同一个包下,不写修饰符的变量、方法都不可以被B使用。

对比发现,和protected关键字的表现一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值