Java中public、protected、default、pr

2018-12-27  本文已影响0人  white_or_black

首先按照权限从上到下的顺序排序

  1. public 任何地方都可以访问,对访问无限制

  2. protected 同一个包内或者不同包内的子类可以访问

  3. default(默认省略) 同一个包内可以访问

  4. private 同一个类可以访问

表格如下:

限定符 类内部 本包 子类 外部包
public
protected
default
private

代码如下:

/**
 * @author wzq
 * @date 2018/12/27 上午11:43
 * @desc 最基本的一个类(被调用属性的一个类,分别定义了四个不同权限的属性)
 */

public class Packet1Example {

    public int mPublic;

    protected int mProtected;

    int mDefault;

    private int mPrivate;

}
/**
 * @author wzq
 * @date 2018/12/27 上午11:47
 * @desc 一个相同包内的类, 尝试去获取Example类里面的属性
 */

public class Packet1Test {

    private Packet1Test() {
        Packet1Example packet1Example = new Packet1Example();
        int a = packet1Example.mPublic;
        int b = packet1Example.mProtected;
        int c = packet1Example.mDefault;
    }

}

/**
 * @author wzq
 * @date 2018/12/27 上午11:49
 * @desc 一个相同包内的类, 尝试去获取Example类里面的属性
 */

public class Packet2Test {

    private Packet2Test() {
        Packet1Example packet1Example = new Packet1Example();
        int a = packet1Example.mPublic;
    }

}

/**
 * @author wzq
 * @date 2018/12/27 上午11:51
 * @desc 一个不同包的继承自Example的子类,尝试去获取Example的属性
 */

public class Packet2SonTest extends Packet1Example {

    private Packet2SonTest() {
        int a = mPublic;
        int b = mProtected;
    }
}
说明:Packet1Example、Packet1Test都是属于Package1的类;Packet2Test,Packet2SonTest(继承于Packet1Example)都是属于Package2的类。

代码超简单,细心耐心的对比一下就可以规律了。

上一篇下一篇

猜你喜欢

热点阅读