码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-07 15:31:25      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

说明部分转自: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);  
    }  
  
}  

 

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

标签:

原文地址:http://www.cnblogs.com/zengda/p/4398333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!