Java的访问控制和修饰符

以前对于java中类的访问控制没有做一定的研究,毕竟每次编代码由于Eclipse的智能型使得现在某些原理并没有实际的掌握,因此今天重新自己编代码将其区别分辨出来。

1.         Private:它只能被所定义的类或类的不同对象所访问。当外部访问这个变量时将出错。

       public class A {

    private int a;

   

    private void  count(){

      System.out.println("测试");   

    }

}

public class B {

 

    public void acceptMethod(){

       A a=new A();

       a.a=10;

       a.count();

    }

}

这样是错误的,B不能访问A的属性及方法,因为类B不是A类型的。但是如果我让B继承A,这样它会对吗?答案也是否定的。如果B继承A,只能说明BA的子类,并不能说明B就是A类型。因此这里可以将A中的访问权限改为publicprotected

 

2.        Protected:允许类本身、子类以及相同包中的类访问它,属于家庭秘密型,不让外人知道

package A;

public class A {

    protected int a;

    protected void  count(){

      System.out.println("测试");   

    }

}

 

 

package B;

import A.A;

public class B extends A{

 

    void test(){

       A a=new A();

       a.a=10;

       a.count();

    }

}

此方式是错误的,不被不同包中的类访问,所以是不能得到编译的。将该类放入同一包中,此时就是前面private说到的处理方式了,这样protected属性及方法就能得到访问。

3.    Public是无秘密可言,任何人都能看到。即使在不同包中任然一样能够访问。拿protected前面处理的例子进行修改,将发现其是可行的。在这里就不做代码介绍了。

 

4.    缺省

Java中如果不显示地设置成员访问控制的时候,即缺省的访问控制,该访问控制允许在相同包中的类成员之间相互访问,相当于在同一包中的类是相互信任的朋友。

package A;

public class A {

 

     int a;

     void  count(){

      System.out.println("测试");   

    }

}

 

package B;

import A.A;

public class B extends A{

 

    void test(){

       A a=new A();

       a.a=10;

        a.count();

    }

}

该方式处理是错误的,因为他们不属于同一个包中,且其访问方式是缺省的方式。处理方式是对缺省方式,将另外一个访问类放置于同一个包中。

 

总结:根据上面的例子及分析做如下总结。

1.       Public的访问权限最大,可以被不同包中的任何类访问到。

2.       Protected访问权限属于家庭秘密型,秘密只归“亲戚”所分享,因此不同包的类不允许其访问。

3.       Private最自私,其只允许自己访问。因此针对某些需要保护的数据可以采用该修饰符。

4.       缺省访问权限与protected相类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值