博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从实例角度分析java的public、protected、private和default访问权限
阅读量:5292 次
发布时间:2019-06-14

本文共 4795 字,大约阅读时间需要 15 分钟。

 

 

一、public

  同一个package

  1.本类内部

public class A {    public int f=1;    public void m1() {}    public void m2() {        f=2;   //类内部正常访问        m1();  //类内部正常访问    }}

 

   2.子类

package same;public class A {    public int f=1;    public void m1() {}}
package same;public class B extends A {    public void m2() {        f=2;  //调用父类的public成员变量        m1(); //调用父类的public成员方法    }}

   3.其它类通过类对像访问对像成员

package same;public class A {    public int f=1;    public void m1() {}}
package same;public class B {    public static void main(String[] args) {        A a =new A();        a.f=2;   //同一个包内  对类A的对像里面的public成员变量访问        a.m1();  //同一个包内  对类A的对像里面的public成员方法访问    }}

  不同package之间

  1.子类

package same;public class A {    public int f=1;    public void m1() {}}
package other;import same.A;public class B extends A {    public void m2() {        f=2;     //对类A的的public成员变量访问        m1();    //对类A的的public成员方法访问    }}

  

  2.其它类通过类对像访问对像成员

package same;public class A {    public int f=1;    public void m1() {}}
package other;import same.A;public class B  {    public static void main(String[] args) {        A a=new A();        a.f=2;     //不同包之间  对类A的对像里面的public成员变量访问        a.m1();    //不同包之间  对类A的对像里面的public成员方法访问    }}

 二、protected

 同一个package

  1.本类内部

package same;public class A {    protected int f=1;    protected void m1() {}        public void m2() {        f=2;  //访问本类的protected成员变量        m1(); //访问本类的protected成员方法    }}

  2.子类

package same;public class A {    protected int f=1;    protected void m1() {}}
package same;public class B extends A {    public void m2() {        f=2;  //访问父类的protected成员变量        m1(); //访问父类的protected成员方法    }}

  3.其它类通过类对像访问对像成员

package same;public class A {    protected int f=1;    protected void m1() {}}
package same;public class B  {    public void m2() {        A a=new A();        a.f=2;  //访问A类对像的protected成员变量        a.m1(); //访问A类对像的protected成员方法    }}

  不同package之间

  1.子类

package same;public class A {    protected int f=1;    protected void m1() {}}
package other;import same.A;public class B extends A {    public void m2() {        f=2;     //对类A的的protected成员变量访问        m1();    //对类A的的protected成员方法访问    }}

  

  2.其它类通过类对像访问对像成员

package same;public class A {    protected int f=1;    protected void m1() {}}
package other;import same.A;public class B {    public void m2() {        A a=new A();        //a.f=2;     无法对类A对像的protected成员变量访问        //a.m1();    无法对类A对像的protected成员变量方法    }}

三、default

 同一个package

  1.本类内部

package same;public class A {    int f=1;    void m1() {}        public void m2() {        f=2;  //访问本类的default成员变量        m1(); //访问本类的default成员方法    }}

  2.子类

package same;public class A {    int f=1;    void m1() {}}
package same;public class B extends A {    public void m2() {        f=2;  //访问A类对像的default成员变量        m1(); //访问A类对像的default成员方法    }}

 

 3.其它类通过类对像访问对像成员

package same;public class A {    int f=1;    void m1() {}}
package same;public class B  {    public void m2() {        A a=new A();        a.f=2;  //访问A类对像的default成员变量        a.m1(); //访问A类对像的default成员方法    }}

  不同package之间

  1.子类

package same;public class A {    int f=1;    void m1() {}}
package other;import same.A;public class B extends A {    public void m2() {        //f=2;    无法对类A的default成员变量访问        //m1(); 无法对类A的default成员变量方法    }}

  2.其它类通过类对像访问对像成员

package same;public class A {    int f=1;    void m1() {}}
package other;import same.A;public class B  {    public void m2() {        A a=new A();        //a.f=2;    无法对类A对像的default成员变量访问        //a.m1(); 无法对类A对像的default成员变量方法    }}

 

四、private

  同一个package

  1.本类内部

package same;public class A {    private int f=1;    private void m1() {}    public void m2() {        f=2;  //访问本类的private成员变量        m1(); //访问本类的private成员方法    }}

  2.子类

package same;public class A {    private int f=1;    private void m1() {}}
package same;public class B extends A {    public void m2() {        //f=2;  无法访问A类的private成员变量        //m1(); 无法访问A类的private成员方法    }}

  

  3.其它类通过类对像访问对像成员

package same;public class A {    private int f=1;    private void m1() {}}
package same;public class B {    public void m2() {        A a =new A();        //a.f=2;  无法访问A类对像的private成员变量        //a.m1(); 无法访问A类对像的private成员方法    }}

  不同package之间

  1.子类

package same;public class A {   private  int f=1;   private  void m1() {}}
package other;import same.A;public class B extends A {    public void m2() {        //f=2;    无法对类A的private成员变量访问        //m1(); 无法对类A的private成员变量方法    }}

  2.其它类通过类对像访问对像成员

package same;public class A {   private  int f=1;   private  void m1() {}}
package other;import same.A;public class B  {    public void m2() {        A a=new A();        //a.f=2;    无法对类A对像的private成员变量访问        //a.m1(); 无法对类A对像的private成员变量方法    }}

 

转载于:https://www.cnblogs.com/bateman6988/p/7674738.html

你可能感兴趣的文章
黑盒测试和百合测试的优缺点对比
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
C#基础_注释和VS常用快捷键(一)
查看>>
虚拟DOM
查看>>
uva 11468 Substring
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
R语言-rnorm函数
查看>>
Spark的启动进程详解
查看>>
Java 字符终端上获取输入三种方式
查看>>
javascript 简单工厂
查看>>
java调用oracle存储过程,返回结果集
查看>>
使用命令创建数据库和表
查看>>
数据库的高级查询
查看>>
HttpClient(一)-- HelloWorld
查看>>
dump调试函数
查看>>