文档章节

《Thinking in Java》Six 访问权限控制

DouDouLee
 DouDouLee
发布于 2016/04/03 11:37
字数 281
阅读 22
收藏 0

不在同一个包中的.java

papackage Fifth;
public class SixQuanXian {
 protected void Access1(){
  System.out.println("protected");
 }
 
 public void Access2(){
  System.out.println("public");
 }
 
 private void Access3(){
  System.out.println("private");
 }
 
 void Access4(){
  System.out.println("default");
 }
}
package sixth;

import Fifth.SixQuanXian;

public class QuanXian {
 public static void main(String[] args){
  SixQuanXian s = new SixQuanXian();

  s.Access2();//不在一个包中只有public可以被访问
 
  //s.Access1();//protected
 
 //s.Access3();//private

  //s.Access4();//default
 }
}

类的访问权限

 package sixth;

 class Connection {
  private static int count = 0; 
  
 private Connection(){
  count++;
  }
 
 //不希望类被访问可以将类的所有构造器都指定为private,从而阻止任何人创建该类的对象
 //但可以在类的static成员内部创建该类的对象。
 
 public static Connection makeConnection(){
  return new Connection();
 }
 
  public int getCount() {
         return count--;
     }
 
}
 public class ConnectionManager{
  
  int countOfConnection = 4;
  //Connection 类型的数组
   
  Connection[] ca = new Connection[countOfConnection];
     // 非静态实例初始化
     {
         for (int i = 0; i < countOfConnection; ++i) {
             ca[i] = Connection.makeConnection();
         }
     }
     public Connection getConnection(int i) {
         if (i < countOfConnection) {
             return ca[i];
         } else {
             return null;
         }
     } 
     
  public static void main(String[] args){
   ConnectionManager c = new ConnectionManager();
 
   //Connection c1 = new Connection();//the constructor Connection is not visible,不可以如此创建
    
         for (int i = 0; i < c.countOfConnection + 1; ++i) {
             Connection connection = c.getConnection(i);
             if (connection != null) {
                 System.out.println("num = " + connection.getCount());
             } else {
                 System.out.println("null");
             }
         }
  }
 }

© 著作权归作者所有

DouDouLee
粉丝 6
博文 95
码字总数 45242
作品 0
西安
私信 提问
加载中

评论(2)

DouDouLee
DouDouLee 博主

引用来自“灭声”的评论

怎么四个都是protected
是第一个程序SixQuanXian.java吗?依次是protected、public、private、default的哇
灭声
灭声
怎么四个都是protected
反射机制中获取private成员的值

我们来看下例子: 执行结果如下: 说明反射机制中无法获取到private成员的值。那到底有没有办法获取到?当然是有。Java反射机制提供的setAccessible()方法可以取消Java的权限控制检查。...

Lienson
03/28
90
0
Java 书籍 Top 10

陈皓 http:// blog.csdn.net/haoel 下面是Java Inside上推荐的十本Java书籍(文章来源),我把中文版的也列了出来。 1)Java Language Specification, Third Edition (by James Gosling) 本书...

JavaGG
2009/09/21
12.7K
20
透过AccessController深入了解Java安全模型

问题 上一期在使用到MappedByteBuffer时,采用的其中一种方式(AccessController)来释放已分配的内存映射,今天具体探讨一下AccessController的前世今生。 回顾上一期代码: 首先我们先了解...

酱君挺怎样
2018/06/03
0
0
Windows上的Java Usage Tracker本地提权漏洞详情披露(CVE-2018-3211)

     我们发现,Java Usage Tracker中的设计缺陷/弱点可以让黑客创建任意文件,注入攻击者指定的参数并提升本地特权。反过来,这些可以链接起来并用于升级权限,以便访问受影响系统中的资...

嘶吼RoarTalk
2018/10/22
0
0
Java 基础语法(一) 类、方法、实例变量的概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35619188/article/details/85004955 类、方法、实例变量的概念 对象:对象是类的一个实例,有状态和行为。...

三棵面包树
2018/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
423
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
4
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
3
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
7
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部