包:库单元

1.当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。
2.每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类名称必须和文件的名称相同。
3.每个编译单元只能有一个public类,否则编译器就不会接受。
4.如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,因为它们不是public类。
  • 代码组织
xx.java编译生成xx.class
package语句必须是文件除注释以外的第一句程序代码

package:


  1. package com.util.tools;
  2. public class Tools {
  3. public static void print(Object object) {
  4. System.out.println("" + object);
  5. }
  6. }

import:


  1. package com.test;
  2. package com.test;
  3. import static com.util.tools.Tools.*; //注意
  4. import java.util.*;
  5. public class Test {
  6. public static void main(String[] args) {
  7. print("Hello Java.");
  8. print(Calendar.getInstance().getTime().toString());
  9. }
  10. }
  • 创建独一无二的包名
按照惯例,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
除了包含该成员的类之外,其他任何类都无法访问这个成员

  1. package com.test;
  2. public class Num1 {
  3. protected static int i = 0;
  4. static int j = 0;
  5. private static int k = 0;
  6. }
  7. class Num2 {
  8. int i = Num1.i;
  9. int j = Num1.j;
  10. //int k = Num1.k; //不能访问private,编译报错
  11. }
  12. class Num3 extends Num1 {
  13. int a = i;
  14. int b = j;
  15. //int c = k; //子类也不能访问private域,编译报错
  16. }

类访问权限

类可以为public和包访问权限的,但不可以是private和protected的(内部类除外)。
如果不希望其他任何人对该类拥有访问权限,可以把构造器指定为private,从而阻止创建该类对象,但可以在该类内部创建对象。【单例模式】

  1. public class Test {
  2. public static void main(String[] args) {
  3. Camera mCamera = Camera.newCamera();
  4. }
  5. }
  6. class Camera {
  7. private static Camera mCamera = new Camera();
  8. private Camera() {}
  9. public static Camera newCamera() {
  10. return mCamera;
  11. }
  12. }

总结

  • 访问权限
  类内部 本包 子类 外部包
public
protected ×
包访问权限 × ×
private × × ×
  • 访问权限使用
1.类只能用public,protected
2.方法,成员变量,局部变量可以使用以上四种权限

访问权限

  • 成员访问权限
  1. 默认:不声明的话,就是包访问权限,同一个包下的可以访问,包外的无法访问。
  2. public:都可以访问。
  3. protected:继承访问权限,它的子类可以访问;同时也是包访问权限,同一个包内的可以访问。
  4. private:类外无法访问。
  • 类访问权限
  1. public:
  2. 包访问权限:此时最好将该类的域声明为private才有意义。

注:类访问权限不能是private的,如果不希望任何其他访问该类,可以将此类的构造器定义为private,不让其他可以定义该类的对象!

protected也不行!

  • 如果一个类的构造器是private

可以在这个类里在定义一个 public static 类名 的方法,在方法里调用构造器返回这个类的对象引用  (return new leiming())。然后在类外,调用这个方法来建立该类的对象引用。

												

JAVA基础之访问控制权限的更多相关文章

  1. Java基础之访问权限控制

    Java基础之访问权限控制 四种访问权限 Java中类与成员的访问权限共有四种,其中三种有访问权限修饰词:public,protected,private. Public:权限最大,允许所有类访问,但 ...

  2. Java类成员访问控制权限

    类成员访问控制权限 在JAVA中有四种访问控制权限,分别为:private, default, protected, public 1.Private 如果一个成员方法或变量名前使用了private, ...

  3. Java中的访问控制权限

    简介 Java中为什么要设计访问权限控制机制呢?主要作用有两点: (1)为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. (2) ...

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

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

  5. java进阶(6)--访问控制权限

    一.四种访问控制权限   二.举例同包下访问权限

  6. JAVA基础--继承和权限控制

    1. extends继承 2. java只支持单继承,不允许多继承 修饰符 类内部 同一个包 子类 任何地方 private YES       default YES YES     protect ...

  7. Java基础——关于访问权限的一道例题

    一.回顾访问修饰符 ==public:被它修饰的类,属性,方法,不仅可以跨类访问,而且可以跨包(package)访问 ==private:可以修饰数据成员,构造方法,方法,不能修饰类,被它修饰的成员只 ...

  8. java四种访问控制权限:public ,default,protected,private

    四种访问权限的控制 范围 private default protected  public 同一个类中 √ √ √ √ 相同包不同类 × √ √ √ 不同包的子类中 × × √ √ 不同包非子类 × ...

  9. Java基础—访问权限控制

    Java中访问权限控制的作用: 为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. 为了让类库设计者可用更改类的内部工作方式,而不 ...

随机推荐

  1. LINQ to Entities 不识别方法“System.String ToString(System.String)”,因此该方法无法转换为存储表达式。

    来源:https://www.cnblogs.com/hao-1234-1234/p/9112434.html 6  Select的时候,时间无法转换成 年月日  YYMMMdd 报错:LINQ to ...

  2. 设置Redis集群访问密码(不停机设置)

    依次登陆6个节点 cd  /mysystest ./redis/bin/redis-cli -c -h 192.168.43.86 -p 7301 执行以下命令 config set masterau ...

  3. Java面向对象程序设计----接口

    接口:接口是一套规范.一个比抽象类更抽象的类. 接口中只能写抽象方法.接口中没有构造函数接口中的变量:public Stratic final接口怎么来使用(implements)实现接口 接口语法: ...

  4. 【spark】spark应用(分布式估算圆周率+基于Spark MLlib的贷款风险预测)

    注:本章不涉及spark和scala原理的探讨,详情见其他随笔 一.分布式估算圆周率 计算原理:假设正方形的面积S等于x²,而正方形的内切圆的面积C等于Pi×(x/2)²,因此圆面积与正方形面积之比C ...

  5. MySQL Backup--Xtrabackup备份设置锁等待问题

    问题描述 innobackupex备份过程需要保证备份数据一致性,通过刷新表缓存和加全局读锁(FLUSH TABLES WITH READ LOCK)获取备份位点,而为防止锁等待超时,会先设置: SE ...

  6. CentOS7搭建git服务器

    在CentOS7上搭建git服务器, 1.在Linux上安装git yum install -y git 验证是否安装成功,出现版本号即成功 git --version 2.创建版本库和用户 创建用户 ...

  7. 每个程序员都应该知道延迟数—Latency Numbers Every Programmer Should Know

    每个程序员都应该知道延迟数 Latency Numbers Every Programmer Should Know https://people.eecs.berkeley.edu/~rcs/res ...

  8. java 第九次作业

    一.题目:利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积. 二.代码 /* 5个形状类分别调用Shape接口: 柱体类中, ...

  9. 自定义异步IO框架

    异步就是回调 异步 = 非阻塞+循环 select只能完成IO多路复用,不能完成异步 IO多路复用--->监听多个socket对象,这个过程是同步的 利用其特性可以开发异步模块 异步IO:非阻塞 ...

  10. java 反射获取字段为List类型中的泛型类型

    在java编程时,经常会使用反射去处理对象,有时会需要知道List的泛型类型:示例操作如下 obj = pojo.newInstance(); // 首先得到pojo所定义的字段 Field[] fi ...