JAVA基础之访问控制权限
包:库单元
1.当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。
2.每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类名称必须和文件的名称相同。
3.每个编译单元只能有一个public类,否则编译器就不会接受。
4.如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,因为它们不是public类。
- 代码组织
xx.java编译生成xx.class
package语句必须是文件除注释以外的第一句程序代码
package:
- package com.util.tools;
- public class Tools {
- public static void print(Object object) {
- System.out.println("" + object);
- }
- }
import:
- package com.test;
- package com.test;
- import static com.util.tools.Tools.*; //注意
- import java.util.*;
- public class Test {
- public static void main(String[] args) {
- print("Hello Java.");
- print(Calendar.getInstance().getTime().toString());
- }
- }
- 创建独一无二的包名
按照惯例,package名称的第一部分是类的创建者的反顺序的Internet域名
java解释器的运行过程
1.找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class文件的根目录
2.从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称
3.得到的路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与你所要创建的类名称相关的.class文件 注:CLASSPATH=.;D:\JAVA;C\flavors\grape.jar //其中JAR文件的实际名称需要写清楚
Java访问权限修饰词
public - protected - 包访问权限(无关键字) - private
置于类中每个成员的定义之前,无论它是域还是方法
访问控制权限常被成为:具体实现的隐藏
- 取得对某成员的访问权限途径
1.使成员成为public
2.放在同一包中,不加访问权限修饰词
3.使用继承
4.提供访问器和变异器(get/set方法)
- public:接口访问权限
任何类都可以访问
- protected:继承访问权限
protected也提供包访问权限,相同包内的其他类可以访问protected权限
- 包访问权限
默认权限,无关键字
当前包中的所有其他类对那个成员都有访问权限,对于包之外的所有类,这个成员却是private
默认包:在相同目录下,都没有定义package,是具有包访问权限的
- private
除了包含该成员的类之外,其他任何类都无法访问这个成员
- package com.test;
- public class Num1 {
- protected static int i = 0;
- static int j = 0;
- private static int k = 0;
- }
- class Num2 {
- int i = Num1.i;
- int j = Num1.j;
- //int k = Num1.k; //不能访问private,编译报错
- }
- class Num3 extends Num1 {
- int a = i;
- int b = j;
- //int c = k; //子类也不能访问private域,编译报错
- }
类访问权限
类可以为public和包访问权限的,但不可以是private和protected的(内部类除外)。
如果不希望其他任何人对该类拥有访问权限,可以把构造器指定为private,从而阻止创建该类对象,但可以在该类内部创建对象。【单例模式】
- public class Test {
- public static void main(String[] args) {
- Camera mCamera = Camera.newCamera();
- }
- }
- class Camera {
- private static Camera mCamera = new Camera();
- private Camera() {}
- public static Camera newCamera() {
- return mCamera;
- }
- }
总结
- 访问权限
| 类内部 | 本包 | 子类 | 外部包 | |
| public | √ | √ | √ | √ |
| protected | √ | √ | √ | × |
| 包访问权限 | √ | √ | × | × |
| private | √ | × | × | × |
- 访问权限使用
1.类只能用public,protected
2.方法,成员变量,局部变量可以使用以上四种权限
访问权限
- 成员访问权限
- 默认:不声明的话,就是包访问权限,同一个包下的可以访问,包外的无法访问。
- public:都可以访问。
- protected:继承访问权限,它的子类可以访问;同时也是包访问权限,同一个包内的可以访问。
- private:类外无法访问。
- 类访问权限
- public:
- 包访问权限:此时最好将该类的域声明为private才有意义。
注:类访问权限不能是private的,如果不希望任何其他访问该类,可以将此类的构造器定义为private,不让其他可以定义该类的对象!
protected也不行!
- 如果一个类的构造器是private
可以在这个类里在定义一个 public static 类名 的方法,在方法里调用构造器返回这个类的对象引用 (return new leiming())。然后在类外,调用这个方法来建立该类的对象引用。
JAVA基础之访问控制权限的更多相关文章
- Java基础之访问权限控制
Java基础之访问权限控制 四种访问权限 Java中类与成员的访问权限共有四种,其中三种有访问权限修饰词:public,protected,private. Public:权限最大,允许所有类访问,但 ...
- Java类成员访问控制权限
类成员访问控制权限 在JAVA中有四种访问控制权限,分别为:private, default, protected, public 1.Private 如果一个成员方法或变量名前使用了private, ...
- Java中的访问控制权限
简介 Java中为什么要设计访问权限控制机制呢?主要作用有两点: (1)为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. (2) ...
- java 基础 四种权限修饰符
/** * Java有四种权限修饰符: * public > protected > (default) > private * 同一个类 YES YES YES YES * 同一个 ...
- java进阶(6)--访问控制权限
一.四种访问控制权限 二.举例同包下访问权限
- JAVA基础--继承和权限控制
1. extends继承 2. java只支持单继承,不允许多继承 修饰符 类内部 同一个包 子类 任何地方 private YES default YES YES protect ...
- Java基础——关于访问权限的一道例题
一.回顾访问修饰符 ==public:被它修饰的类,属性,方法,不仅可以跨类访问,而且可以跨包(package)访问 ==private:可以修饰数据成员,构造方法,方法,不能修饰类,被它修饰的成员只 ...
- java四种访问控制权限:public ,default,protected,private
四种访问权限的控制 范围 private default protected public 同一个类中 √ √ √ √ 相同包不同类 × √ √ √ 不同包的子类中 × × √ √ 不同包非子类 × ...
- Java基础—访问权限控制
Java中访问权限控制的作用: 为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. 为了让类库设计者可用更改类的内部工作方式,而不 ...
随机推荐
- javascript 四舍五入; js 四舍五入
方法 Math.round round() 方法可把一个数字舍入为最接近的整数. 对于 0.5,该方法将进行上舍入. 例如,3.5 将舍入为 4,而 -3.5 将舍入为 -3. Math.round( ...
- php图形图像处理技术
图形图像处理技术,gd库的强大支持,PHP的图像可以是PHP的强项,PHP图形化类库,jpgraph是一款非常好用的强大的图形处理工具. 在PHP中加载GD库 gd官方网址下载: http://www ...
- [openssl] 使用openssl生成证书
使用openssl生成带域名的证书,SAN,subjectAltName, subject alternative name, DNS. 1. 生成私钥 openssl genrsa - 2. 编写配 ...
- WEB前端-搜索引擎工作原理与SEO优化
一.搜索引擎工作原理 搜索引擎的工作分为三个阶段,即爬行,索引和检索 1.爬行 搜索引擎具有网络爬虫或蜘蛛来执行爬网,每次抓取工具访问网页时,它都会复制该网页并将其网址添加到索引中. 在“蜘蛛”抓取 ...
- qingqing的项目
1 https://www.cnblogs.com/zhangqing979797/p/10147679.html 2 https://www.cnblogs.com/zhangqing979797/ ...
- Vuex基础 -01 -实现简易计数器 -支持 加数/ 减数/ 奇数再加/ 异步加法(setTimeout 1000ms) -单组件演示语法
Vuex 的结构图 工程组织 Vuex的核心管理程序 store.js /* vuex的核心管理程序 */ import Vue from 'vue' import Vuex from 'vuex' ...
- P2680 运输计划[二分+LCA+树上差分]
题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n−1 条航道连通了 LL 国的所有星球. 小 ...
- 关于Serializable
1.在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化. 2.通过ObjectOutputStream和ObjectInputStream对对象进行序列化 ...
- java oracle的2种分页方法
java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --> <select id="findBlogs" resultType= ...
- linux学习6 Linux系统组成及初始
一.linux发行版回顾 1.版本回顾 2.Linux基础 a.CPU架构 32位CPU: X86 64位CPU:X64因为最早的X64位CPU是amd公司生产的所以也叫 amd64(可以兼容X86) ...