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;Cflavorsgrape.jar //当中JAR文件的实际名称须要写清楚

Java訪问权限修饰词

public - protected - 包訪问权限(无keyword) - private
置于类中每一个成员的定义之前,不管它是域还是方法
訪问控制权限常被成为:详细实现的隐藏
  • 取得对某成员的訪问权限途径
1.使成员成为public
2.放在同一包中,不加訪问权限修饰词
3.使用继承
4.提供訪问器和变异器(get/set方法)
  • public:接口訪问权限
不论什么类都能够訪问
  • protected:继承訪问权限
protected也提供包訪问权限。同样包内的其它类能够訪问protected权限
  • 包訪问权限
默认权限,无keyword
当前包中的全部其它类对那个成员都有訪问权限,对于包之外的全部类,这个成员却是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.方法,成员变量。局部变量能够使用以上四种权限
原文地址:https://www.cnblogs.com/cxchanpin/p/7289358.html