对于JAVA中访问权限修饰符的理解

来源:互联网 发布:java jasperreports 编辑:程序博客网 时间:2024/06/06 01:00

JAVA中有四个权限修饰符:public,protected,friendly,private


 

权限限制符的作用范围:

 当前类同一包下的不同类子孙类其他包public√√√√protected√√√Xfriendly(默认)√√XXprivate√XXX


以上得表格就是权限修饰符的作用范围。记住很简单,记住四个权限修饰符,记住四个作用范围。一交叉就是咯。


什么是权限限制符的作用范围。

我们知道在一个类中,一般有private的属性,和public的方法。

在另一个类中,使用这个类,我们只需要new一个对象,然后就可以调用这个类中的public方法。

简而言之,就是我们可以在什么地方访问到我们的属性,或者方法,这个“什么地方”就是作用范围。


通过两个例子说明一下:

有一个A类:

package cn.com.domain;import org.junit.Test;public class A {public int a = 3;private int b = 4;public int getB() {return b;}public void setB(int b) {this.b = b;}private void fun(){System.out.println("A类中private方法输出private属性 b = :"+b);}@Testpublic void test(){fun();}}

运行结果是:

A类中private方法输出private属性 b = :4

然后我在同一个包下,创建一个B类:

package cn.com.domain;public class B {public static void main(String[] args) {A a = new A();System.out.println("在B类中调用A的public属性 a = :"+a.a);a.setB(2);System.out.println("在B类中调用A中的public方法对B进行赋值:b="+a.getB());/* * 我们知道A中有一个私有的方法fun() */}}

运行结果是:

在B类中调用A的public属性 a = :3在B类中调用A中的public方法对B进行赋值:b=2

对运行结果进行解释:


我们主要的目的是想知道什么是权限限制符的作用范围。

根据那么表我们知道,我这个例子,主要是对public和private进行分析

我们看到,在同一个类下,我们可以访问到当前类中的所有属性,比如A类中的那个private方法,我们输出了private的属性b;

那么我们同时也看到了,在同一个包下,不同类中,就是在B类重对A的访问,只能访问到public的属性,private的属性我们根本访问不了。


同理:如果A类中新增了一个方法,protected  void fun2(){...},那么在B类中我们能访问到么?

答案是:能!

那么,如果我们在创建一个包:cn.com.domain1,在这个包下,新建一个类C,在C类中new一个A对象,加入A类中也有protected  void fun2(){...},那么我们可以访问到么?

答案是:不能!


这样,我们就可以理解什么是作用范围了!!!









0 0