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 - 包訪问权限(无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.方法,成员变量。局部变量能够使用以上四种权限
时间: 2024-11-03 22:10:46

JAVA基础之訪问控制权限(封装)的相关文章

C++ 訪问控制权限图解

基类訪问权限 类继承方式 子类訪问权限           public   public   protected public protected   private   No Access   public   protected   protected protected protected   private   No Access   public   private   protected private private   private   No Access          

TJI读书笔记09-访问控制权限

body, td { font-family: 微软雅黑; font-size: 10pt; } TJI读书笔记09-访问控制权限 包,package和import 权限修饰符 接口和实现 类的访问权限控制 首先问一个问题,为什么要有访问控制权限? 安全,这当然是一个很重要的原因. 让类库的使用者只能接触他做需要接触的东西. 另外一方面,当我们去重构和修改代码的时候,如何不影响其他的代码和功能?权限访问控制是可以很好的将"变动的事物"和"不变的事物"区分开来.比如一

CCNP路由实验之十四 路由器的訪问控制ACL

?? ACL(Access Control List,訪问控制列表) 是路由器接口的指令列表,用来控制port进出的数据包.ACL适用于全部的路由协议,如IP.IPX.AppleTalk等.这张表中包括了匹配关系.条件和查询语句,表仅仅是一个框架结构.其目的是为了对某种訪问进行控制.訪问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源port.目的port等,依据预先定义好的规则对包进行过滤.从而达到訪问控制的目的,该技术初期仅在路由器上支持.如今已经支持三

Phalcon 訪问控制列表 ACL(Access Control Lists ACL)

Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问某些资源而不同意訪问其他资源等. 这里我们建议开发人员了解一些关于ACL的技术. ACL有两部分组成即角色和资源. 资源即是ACL定义的权限所依附的对象. 角色即是ACL所字义的请求者的身份,ACL决定了角色对资源的訪问权限.同意訪问或拒绝訪问. 创建 ACL(Creating an ACL)? 这

C++类訪问控制及继承

一.C++类的訪问控制有三类:public,protected和private. 类訪问控制符 类成员可被哪些对象訪问 public 1.类的成员函数.2.类对象.3.友元.4.子类成员函数 protected 1.类的成员函数.2.友元.3.子类成员函数 private 1.类的成员函数.2.友元 二.C++类的继承 继承方式也有三种:public,protected和private. 继承之后,基类成员的可訪问性会发生变化,例如以下表: public继承 基类 public protecte

关于Apacheserver的訪问控制

Apache的訪问控制指对不论什么资源的不论什么方式的訪问控制. 一.基于主机或者IP地址的控制 这样的訪问控制基于訪问者的主机名或者IP地址,通过使用 Deny 和 Allow 指令.实现同意或者禁止某个主机訪问我们的server资源.通常 Order 指令也会一起使用.来定义 Deny 和 Allows 指令起作用的顺序.假设不使用 Order 指令,默认的顺序为 Deny, Allow, 就相当于 Order Deny,Allow. Order 指令和 Allow.Deny 指令配合使用.

Java基础问题10问

Java基础必须掌握的问题10问: 主要知识点: 定义类,字段,static修饰,局部,成员变量初始化, 继承,(非)检查异常,读写流,拷贝文件.. 1.如何定义一个类.字段.方法:如何创建类的对象: 答:类是java程序的组织单位,任何的java语句,都要写在类文件里面.(这么说不全对,package语句和import语句就可以写在外面,但编译之后一定是在类文件里面的) 类一般形式:class className{类体} 定义字段:Java中字段一般即指成员变量(数据库才说是字段) acces

[Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链

应用场景:图片等资源须要设置权限,如:仅仅有认证过的用户才干訪问自己的图片. 解决的方法:使用Nginx的防盗链模块http_secure_link能够实现,该模块默认情况下不包括.故在安装时要加上--with-http_secure_link_module 该模块依据两个參数控制权限訪问,一个是过期时间(即该链接在这个时间之前可訪问,过期后无法訪问),该參数主要出于安全考虑. 还有一个是通过md5算法算出来的KEY,一般通过uri计算 举例: server { listen 80; serve

crm使用soap取消用户訪问记录权限

//取消訪问权限 function demo() { //操作记录的id var targetId = "A8A46444-BA10-E411-8A04-00155D002F02"; //操作记录的实体名称 var targetType = "new_config"; //被分配的用户或者团队的id var assignId = "48025176-2B0E-E411-BA68-00155D002F02"; //systemuser或者team