zoukankan      html  css  js  c++  java
  • 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);  
        }  
      
    }  
  • 相关阅读:
    C#调用易语言DLL
    Github无法访问的解决办法
    CMD命令下图片合成一句话木马命令
    IIS6的文件解析漏洞
    C#的委托
    C#的多线程简洁笔记
    POST注入之sqlmap
    分布式任务调度XXL-JOB初体验
    Ubuntu切换为阿里镜像源
    Ubuntu禁用root账号,开启Ubuntu密钥登录
  • 原文地址:https://www.cnblogs.com/zengda/p/4398333.html
Copyright © 2011-2022 走看看