客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类。

  类创建者:即创建新数据类型的程序员,目标是构建类。  

  访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分  ; b、允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员

   java的四个关键字:public、protected、default、private(他们决定了紧跟其后被定义的东西可以被谁使用)

适用范围<访问权限范围越小,安全性越高>

      访问权限   类   包  子类  其他包

      public     ∨   ∨    ∨     ∨          (对任何人都是可用的)

     protect    ∨   ∨   ∨     ×    (继承的类可以访问以及和private一样的权限)

     default    ∨   ∨   ×     ×    (包访问权限,即在整个包内均可被访问)

     private    ∨   ×   ×     ×    (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

以下,用代码进行详解(建四个类 Person Student Teacher Parents 和一个测试类)

package com.zq.demo.test1;
/**
 * 类内
 * @author Administrator
 */
public class Person {
    public String uname = "王五";
    
    public void introduceMyself(){                
        System.out.println(uname);             
    }
}

package com.zq.demo.test1;
//同一个包
public class Student {
        Person p =  new Person();
    public void test(){
        System.out.println(p.uname);
    }
}

package com.zq.demo.test1;
//子类
public class Teacher extends Person{
    public int age;
    Person p = new Person();
    public void test1(){
        System.out.println(p.uname);
    }
}
package com.zq.demo.test2;
//不同包
import com.zq.demo.test1.Person;

public class Parents {
    public String uname = "haha";
    Person p = new Person();
    public void test2(){
        System.out.println(p.uname);
    }
}

用同样的四个类    来测试protected

在将Person中的uanme改为protected后   类Parents便报错了   The field Person.uname is not visible  (说明不能跨包)

其他三个无影响

private

只有本类中可以访问 但是借助在Person类中有关uname的set、get方法便可以进行访问

default

  测试结果说明  只能在本包中进行访问  在其他包   即使是继承关系  也无法进行访问

java中四种访问修饰符区别及详解全过程的更多相关文章

  1. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  2. java中四种权限修饰符区别

    总的概括:public > protected > (default) > private 细分见下表格: 权限修饰符 public protected (default) priv ...

  3. java中4种修饰符访问权限的区别及详解全过程

    java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...

  4. Java 中的 protected 访问修饰符你真的了解吗?

    protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...

  5. java 基础 四种权限修饰符

    /** * Java有四种权限修饰符: * public > protected > (default) > private * 同一个类 YES YES YES YES * 同一个 ...

  6. Java中四种访问权限总结

    一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.protected,还有一种不带任何修饰符(default). 1. private: Java语言中对访 ...

  7. C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal

    1.五种访问修饰符包括哪些? public.private.protected.internal.protected internal 2.五种访问修饰符的作用范围? public  :公有访问.不受 ...

  8. Java四种访问修饰符

    Java 四种访问权限 一.概述 访问等级比较:public > protected > default > private 无论是方法还是成员变量,这四种访问权限修饰符作用都一样 ...

  9. java四种访问修饰符及各自的权限

    1.public,即共有的,是访问权限限制最宽的修饰符.被public修饰的类.属性.及方法不仅可以跨类访问,而且可以跨包访问. 2. protected,即保护访问权限,是介于public和priv ...

随机推荐

  1. Codeforces 1156E Special Segments of Permutation(单调栈)

    可以用单调栈直接维护出ai所能覆盖到的最大的左右范围是什么,然后我们可以用这个范围暴力的去查询这个区间的是否有满足的点对,一个小坑点,要对左右区间的大小进行判断,只需要去枚举距离i最近的一段区间去枚举 ...

  2. Spring之AOP简单demo

    1.加入JAR包.出了Spring自身的Jar包还要一些依赖的JAR包.不然会报ClassNotFound. Student.java package com.lubby.bean; import o ...

  3. 解决chrome浏览器安装不上的问题

    1.  打开注册表:  windows键 + R --> 输入regedit -->  回车 (注:windows键在左ctrl附近微软图标的键) 2.  找到 32位:HKEY_LOCA ...

  4. java方法执行流程解析

    Java程序运行时,必须经过编译和运行两个步骤.首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件.然后Java虚拟机将编译好的字节码文件加载到内存(这个过程被称为类加 ...

  5. golang-练习2

    反转字符串 package main import "fmt" func FirstReverse(str string) string { var str1 []rune run ...

  6. BZOJ3227 [sdoi2008]红黑树

    贪心什么的太神仙了( 老老实实dp于是就是沙茶题了 f[i][d][0/1]表示i个节点bh为d当前节点颜色白/黑[好好读题是真.. 转移一下然后就可以打表了( 由于我们发现这玩意很好卡有很好的性质( ...

  7. 计蒜客NOIP模拟D1T2

    原题: 蒜头君有一棵有根树,树的每一边都有边权,蒜头君想知道任意两点间最短距离之和为多少.另外,由于各种原因,蒜头君的树的边的边权会发生若干次改变,蒜头君想让你告诉他,每一次改变后,任意两点间最短距离 ...

  8. moment.js时间格式化库

    网址:momentjs.cn 主要用来操作时间的格式化.通过发送API请求获取到的数据中:例如[新闻]中的 发布时间,有的时候.请求到的时间,后台没处理过,那么只能前端来操作数据了. moment.j ...

  9. 远程桌面连接,运维工程师-必备软件【MultiDesk】

    实习时,在本地一家大型女装公司做桌面运维,服务器碰得到少,大部分时间都是在维护同事的电脑桌面,什么360全家桶了,毒霸了,都是通过远程工具 teamviewer 去搞定的. 后来做了前端开发,免不了自 ...

  10. spring依赖搜索

    spring项目在启动时,spring框架会根据名称自动搜索实现类. 这在日常开发中还是很有用的. 下面举两个例子. 1. 先写一个接口(或者抽象类) public interface IPerson ...