关于java:面向对象访问控制finalstatic

5次阅读

共计 2311 个字符,预计需要花费 6 分钟才能阅读完成。

访问控制:


访问控制是给出一套办法,将零碎中的所有性能标识进去,组织起来,托管起来,将所有的数据组织起来标识进去托管起来,而后提供一个简略的惟一的接口,这个接口的一端是利用零碎一端是权限引擎。

作用:

1)避免非法的主体进入受爱护的网络资源。
2)容许非法用户拜访受爱护的网络资源。
3)避免非法的用户对受爱护的网络资源进行非受权的拜访。

自主访问控制:

自主访问控制,是指由用户有权对本身所创立的拜访对象(文件、数据表等)进行拜访,并可将对这些对象的拜访权授予其余用户和从授予权限的用户发出其拜访权限。自主访问控制是一种最为广泛的访问控制伎俩,特点就是依据主体的身份和受权来决定拜访模式。

强制访问控制:

强制访问控制,是指由系统对用户所创立的对象进行对立的强制性管制,依照规定的规定决定哪些用户能够对哪些对象进行什么样操作系统类型的拜访,即便是创建者用户,在创立一个对象后,也可能无权拜访该对象。

基于对象的访问控制:

基于对象的访问控制(OBAC Model:Object-based Access Control Model):DAC 或 MAC 模型的次要工作都是对系统中的拜访主体和受控对象进行一维的权限治理。

基于工作的访问控制模型:

基于工作的访问控制模型(TBAC Model,Task-based Access Control Model)是从利用和企业层角度来解决平安问题,以面向工作的观点,从工作(流动)的角度来建设平安模型和实现平安机制,在工作解决的过程中提供动静实时的平安治理。

基于角色的访问控制模型:

基于角色的访问控制模型(RBAC Model,Role-based Access Model),RBAC 模型的根本思维是将拜访许可权调配给肯定的角色,用户通过饰演不同的角色取得角色所领有的拜访许可权。

final 关键字:


1)final 成员变量

java 规定 final 润饰的成员变量必须由程序员显式地指定初始值。

动态初始化块去初始化值:

 final static   int a ;
    static {// System.out.println("初始化的值"+ a); 这里如果调用的话会出现异常
         a=18;
         System.out.println("初始化的值"+ a);
    }

2)final 润饰局部变量和形式参数

 public class FinalLocalVariableTest {public void test(final  int a){
// 不能对 final 润饰的形式参数进行赋值
//        a++;
   }
  
    public static void main(String[] args) {
        final  String str;
        str="aaaaa";
//final 润饰的局部变量只能被赋值一次 上次胜利
        System.out.println(str);
// 上面这个非法
//        str="bbbb";
       System.out.println(str);
   }
}

3)final 润饰援用类型变量

final 润饰根本类型变量的时候,不能对根本类型变量进行从新赋值,因而根本类型变量不能扭转。

final 润饰援用类型变量的时候,它保留的仅仅是一个援用,这个援用类型变量所援用的地址不会扭转,对象内容能够扭转

 public class FinalReferenceTest {public static void main(String[] args) {
        // 这外面是援用类型
        final  int [] arr ={4,3,2,1};
        System.out.println(Arrays.toString(arr));
        // 上面是对数组进行排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        // 对对象的值进行扭转
        arr[2]=100;
        System.out.println(Arrays.toString(arr));
        //arr=null; 会呈现编译谬误
    }
 }

4)final 润饰的办法不能被重载

 public class FinalMethodFather {public final void test(){}}
 class  FinalMethodSon extends  FinalMethodFather{//public  void  test()
 }

5)final 润饰的类不能被继承

static 关键字:


static 关键字能够用来润饰变量、办法。

static 润饰成员变量:

1)static 润饰成员变量不属于对象的数据结构;
2)static 润饰的成员变量属于类的领域,能够间接应用类名援用变量;
3)static 润饰的成员变量和类的信息存储在办法区,无论类创立多少对象,一个类中 static 润饰的成员变量只有一份。

public class Person {
  private static int count;
  public Person() {System.out.println(++count);
  }
  
  public static void main(String args[]) {Person person1 = new Person();
    Person person2 = new Person();}
}

static 润饰办法:

1. 办法在调用时,会隐式的传递对象的援用(this),例如:
String name = person.getName();

2.static 润饰的办法不须要针对某些对象操作,运行构造只跟输出的参数无关,能够通过类名间接援用,例如:
double result = Math.sin(Math.PI/2);

3.static 办法调用时没有传递具体的对象,所以在 static 办法中不能拜访非 static 的办法。比方:
Math.sin()、Math.sqrt()、Arrays.sort() 等

正文完
 0