zoukankan      html  css  js  c++  java
  • JAVA基础之访问控制权限

    包:库单元

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

    package:

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

    import:

    
    
    [java] view plain copy
     
    1. package com.test;  
    2.   
    3. package com.test;  
    4.   
    5. import static com.util.tools.Tools.*; //注意  
    6. import java.util.*;  
    7.   
    8. public class Test {  
    9.     public static void main(String[] args) {  
    10.         print("Hello Java.");  
    11.         print(Calendar.getInstance().getTime().toString());  
    12.     }  
    13. }  
    • 创建独一无二的包名
    按照惯例,package名称的第一部分是类的创建者的反顺序的Internet域名
    

    java解释器的运行过程

    1.找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class文件的根目录
    2.从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称
    3.得到的路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与你所要创建的类名称相关的.class文件
    
    注:CLASSPATH=.;D:JAVA;Cflavorsgrape.jar //其中JAR文件的实际名称需要写清楚
    

    Java访问权限修饰词

    public - protected - 包访问权限(无关键字) - private
    置于类中每个成员的定义之前,无论它是域还是方法
    访问控制权限常被成为:具体实现的隐藏
    
    • 取得对某成员的访问权限途径
    1.使成员成为public
    2.放在同一包中,不加访问权限修饰词
    3.使用继承
    4.提供访问器和变异器(get/set方法)
    
    • public:接口访问权限
    任何类都可以访问
    
    • protected:继承访问权限
    protected也提供包访问权限,相同包内的其他类可以访问protected权限
    
    • 包访问权限
    默认权限,无关键字
    当前包中的所有其他类对那个成员都有访问权限,对于包之外的所有类,这个成员却是private
    默认包:在相同目录下,都没有定义package,是具有包访问权限的
    
    • private
    除了包含该成员的类之外,其他任何类都无法访问这个成员
    
    
    
    [java] view plain copy
     
    1. package com.test;  
    2.   
    3. public class Num1 {  
    4.     protected static int i = 0;  
    5.     static int j = 0;  
    6.     private static int k = 0;  
    7. }  
    8.   
    9. class Num2 {  
    10.     int i = Num1.i;  
    11.     int j = Num1.j;  
    12.     //int k = Num1.k; //不能访问private,编译报错  
    13. }  
    14.   
    15. class Num3 extends Num1 {  
    16.     int a = i;  
    17.     int b = j;  
    18.     //int c = k; //子类也不能访问private域,编译报错  
    19. }  

    类访问权限

    类可以为public和包访问权限的,但不可以是private和protected的(内部类除外)。
    
    如果不希望其他任何人对该类拥有访问权限,可以把构造器指定为private,从而阻止创建该类对象,但可以在该类内部创建对象。【单例模式】
    
    
    
    [java] view plain copy
     
    1. public class Test {  
    2.     public static void main(String[] args) {  
    3.         Camera mCamera = Camera.newCamera();  
    4.     }  
    5. }  
    6.   
    7. class Camera {  
    8.     private static Camera mCamera = new Camera();  
    9.     private Camera() {}  
    10.   
    11.     public static Camera newCamera() {  
    12.         return mCamera;  
    13.     }  
    14. }  

    总结

    • 访问权限
      类内部 本包 子类 外部包
    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())。然后在类外,调用这个方法来建立该类的对象引用。



  • 相关阅读:
    ubuntu用apt-get安装memcache
    Vagrant error: Your VM has become inaccessible.
    PHP数据类型转换
    vim 树形目录插件NERDTree安装及简单用法
    mysql 导入sql文件,source命令
    linux:vi 替换命令
    svn更改分支名字,move命令
    Subversion命令汇总
    不解压直接查看tar包内容
    ls按时间排序输出文件列表
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/8126364.html
Copyright © 2011-2022 走看看