zoukankan      html  css  js  c++  java
  • 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.方法,成员变量。局部变量能够使用以上四种权限
  • 相关阅读:
    【JZOJ4928】【NOIP2017提高组模拟12.18】A
    【JZOJ4922】【NOIP2017提高组模拟12.17】环
    【JZOJ4923】【NOIP2017提高组模拟12.17】巧克力狂欢
    【JZOJ4924】【NOIP2017提高组模拟12.17】向再见说再见
    【JZOJ4919】【NOIP2017提高组模拟12.10】神炎皇
    【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
    【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇
    【罗宾欺诈者】回环符文——回文树(回文自动机)
    【怪物】KMP畸形变种——扩展KMP
    【51NOD1304】字符串的相似度
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7289357.html
Copyright © 2011-2022 走看看