java,4种权限修饰符的使用

版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/81347204
package p1;

//父类
public class P1Class {

    private int i1 = 0;
    int defaultInt = 0;
    protected int j1 = 0;
    public int k1 = 0;

    public static void main(String[] args) {
        P1Class p1Class = new P1Class();
        p1Class.getI1();//T
        p1Class.getJ1();//T
        p1Class.getDefaultInt();//T
        p1Class.getK1();//T
    }

    private int getI1() {
        return i1;
    }
    
    protected int getJ1() {
        return j1;
    }

    public int getK1() {
        return k1;
    }

    int getDefaultInt() {
        return defaultInt;
    }
}
package p1;

//同包子类
public class S2Class extends P1Class {

    public static void main(String[] args) {
        P1Class p1Class = new P1Class();
        p1Class.getI1();//F
        p1Class.getJ1();//T
        p1Class.getDefaultInt();//T
        p1Class.getK1();//T

        S2Class s2Class = new S2Class();
        s2Class.getI1();//F
        s2Class.getJ1();//T
        s2Class.getDefaultInt();//T
        s2Class.getK1();//T
    }

}
package p1;

//同包非子类
public class OtherClassSamePackage {

    public static void main(String[] args) {
        P1Class p1Class = new P1Class();
        p1Class.getI1();//F
        p1Class.getJ1();//T
        p1Class.getDefaultInt();//T
        p1Class.getK1();//T
    }
}
package s1;

import p1.P1Class;

//不同包子类
public class S1Class extends P1Class {

    public static void main(String[] args) {
        P1Class p1Class = new P1Class();
        p1Class.getI1();//F
        p1Class.getJ1();//F,protected请注意!
        p1Class.getDefaultInt();//F
        p1Class.getK1();//T

        S1Class s1Class = new S1Class();
        s1Class.getI1();//F
        s1Class.getJ1();//T,protected请注意!
        s1Class.getDefaultInt();//F
        s1Class.getK1();//T
    }
}
package s1;

import p1.P1Class;

//不同包非子类
public class OtherClass {

    public static void main(String[] args) {
        P1Class p1Class = new P1Class();
        p1Class.getI1();//F
        p1Class.getJ1();//F
        p1Class.getDefaultInt();//F
        p1Class.getK1();//T
    }
}

T表示正确,F表示错误

总结如下:

代码结构如下:
 

在子类中,子类对象可以访问其从父类继承而来的protected方法,而父类对象不能访问该protected方法。

参考:

https://blog.csdn.net/justloveyou_/article/details/61672133

http://www.runoob.com/java/java-modifier-types.html

猜你喜欢

转载自blog.csdn.net/u010002184/article/details/81347204
今日推荐