java访问权限控制
来源:互联网 发布:nginx 多个域名站点 编辑:程序博客网 时间:2024/05/23 22:01
1.控制访问权限的两个原因
(1)第一是为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作是必要的,但是它并不属于客户端程序员所需接口的一部分。
(2)第二个原因,也是最重要的原因,是为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大的影响。例如,最初可能会以一种方式创建一个类,然后发现如果更改程序结构,可以大大提高运行速度。如果接口和实现可以被明确的隔离和加以保护,就可以实现这一目的,而不必强制客户端程序员重新编写代码。
2.java访问权限修饰词
Private私有访问权限:只有类的内部可以调用。
默认访问权限,即没有任何修饰词:同一个包内都可以访问。
Protected保护权限:同一个包内,或者是子类都可以访问。
Public公共访问权限:任何地方都可以访问。
3.类的访问权限
(1)每个编译单元(java文件)都只有一个public类。这表示,每个编译单元都有单一的公共接口,用public类实现。该接口可以按照要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。
(2)public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。
4.构造器的访问权限
(1)如果没有明确的创建一个构造器的话,就会帮你创建一个默认的构造器(不带任何参数的构造器),此构造器的访问权限是public.
(2)一个类能不用new 创建对象,就是看构造器的访问权限是否可以访问的到,如果一个类里面有两个构造器,创建对象的时候就看调用的那个构造器是否可以访问的到。
package com.tkij.charpter6;public class Test22 {private Test22(){}public Test22(int i){}}package com.tkij.charpter21.thread;import com.tkij.charpter6.Test22;public class ThreadRead {public static void main(String[] args) {//!Test22 ts=new Test22();编译不通过,构造器访问不到Test22 ts=new Test22(1);//第二个构造器可以访问,故可以new对象}}
(3)通过访问权限设计的一种设计模式:单例设计模式
public class Singleton {private Singleton(){ } private static Singleton singleton=new Singleton(); public static Singleton getInstance(){ return singleton; } public static void main(String[] args) {Singleton s=Singleton.getInstance();}}
通过将构造器设为private则客户端不能用new 创建对象,只可以通过getInstance()方法获取Singleton对象,getInstance()方法返回的一个静态实例对象,即Singleton在加载的时候就初始化的一个类变量,static保证了通过getInstance()获取的实例是所有引用共享的唯一一个实例。
- java访问权限控制
- JAVA 权限访问控制
- JAVA访问权限控制
- JAVA访问权限控制
- Java 访问权限控制
- java 访问权限控制
- JAVA访问权限控制
- java 访问权限控制
- Java访问控制权限
- Java访问控制权限
- Java 访问控制权限
- java访问权限控制
- java访问权限控制
- java访问权限控制
- java 访问权限控制
- java访问控制权限
- java访问权限控制
- 【Java】访问控制权限
- 大数(正整数)除法之多精除以单精
- ehcache缓存的使用及配置
- 程序员的出路
- Python3.6用Pyinstaller打包的解决办法
- LINUX下操作GIT远程仓库与本地仓库同步
- java访问权限控制
- lua与c交互
- Device Tree(一):背景介绍
- 求一个无序数组的中位数
- idea使用maven创建web工程
- 编程的智慧
- centOS下mysql-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- virus001-20170805
- 图像处理和图像识别中常用的OpenCV函数