nevergiveupzeng

导航

java作用域public ,private ,protected 及不写时的区别

说明部分转自:http://yangmingjiayou.iteye.com/blog/151865

  
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。 

1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 

2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。 

3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。 

作用域       当前类    同一package   子孙类     其他package 

public            √                  √               √                 √ 

protected       √                 √                √                 × 

friendly           √                 √                ×                × 

private           √                   ×               ×               × 

不写时默认为friendly

 

 

下面是一个实例:

1.fTest.java

 

Java代码  收藏代码
package scope;  
  
public class fTest {  
    private int a=1;  
    protected int b=2;  
    public int c=3;  
    private int  showa(){  
        /*System.out.println(a);*/  
        return a;  
    }  
    public int  showa1(){  
        /*System.out.println(a);*/  
        return a;  
    }  
    protected int showb(){  
        /*System.out.println(b);*/  
        return b;  
    }  
    public int showc(){  
        /*System.out.println(c);*/  
        return c;  
    }  
      
}  

 

 2.sonTest.java

 

Java代码  收藏代码
package scope;  
  
import static org.junit.Assert.*;  
  
import org.junit.Test;  
  
public class sonTest {  
  
    @Test  
    public void test() {  
        fTest ft=new fTest();  
        /*private型的a变量,虽然不能通过ft.a的方式直接获取,但是可以通过public的showa1获取a的值。 
         * 要想a变量完全私有,那么把showa1的方法也改成private*/  
        int a1= ft.showa1();  
        int b1=ft.b;  
        int b=ft.showb();  
        int c1=ft.c;  
        int c=ft.showc();  
        System.out.println("私有变量a1="+a1+"受保护变量b="+b+"受保护变量b1="+b1+  
                "公共变量c="+c+"公共变量c1="+c1);  
    }  
  
}  

 

posted on 2015-04-07 14:57  nevergiveupzeng  阅读(594)  评论(0编辑  收藏  举报