Apex 类与访问修饰符 权限(一)

Apex 类的定义与Java相同,通过class 关键字标识。

1) 每个Top类必须要有修饰符,否则不能通过编译。

    (Compile Error for Test.cls: Top-level type must have public or global visibility at line 1         column 7)

2)内部类可以不写修饰符(私有)。

3) 可选virtual, abstract  表明当前类为抽象类

4)和Java一样,可通过implements关键字实现多个接口,通过extends单继承父类

5)类名不能和SF的关键字重名如标准对象等(之前一同事遇到一个类的类名和标准对象同名,导致在使用标准对象时,报字段不存在)

类访问修饰符

1    private 不可用在Top 类中,仅可在内部类中使用,外部不可访问
      当new Test 调用my()时,可正确执行,当通过 new Test.InnerClazz时报InnerClazz不  存在

public class Test{
  private class InnerClazz{

  }

  public void my(){
    InnerClazz iclass = new InnerClazz();
    System.debug(iclass);
  }
}

2  public 可在当前应用或者在当前命名空间使用

3  global 任意访问,webService必须是global的,如果一个方法或者内部类为global,则Top类必须为global

4  with sharing/without sharing 当前类权限模式

类定义形式

private | public | global
[virtual | abstract | with sharing | without sharing]
class ClassName [implements InterfaceNameList] [extends ClassName] {
// The body of the class
}

成员变量定义形式

 [public | private | protected | global] [final] [static] data_type variable_name [= value]

类型和变量名为必须,访问修饰可选,不写为private final与static 修饰变量为常量与Java相同

类型:基本类型与自定义类型

Apex 属性:get/set

public Integer prop{
  get {return prop;}
  set {prop = value;}
}

//简写 当只写get时,在本类中也无法给值
public Integer prop{get; set;}

成员方法形式

[public | private | protected | global] [override] [static] data_type method_name (input parameters)
{
// The body of the method
}

1)访问修饰符可选 不写为private

2) override 实现父类的抽象方法

3) static 静态方法,类方法,通过类调用

4) 值类型(基本数据类型如:Integer,String)与引用类型

权限(一)

1)with sharing 当前类遵循SF的共享模型 按SQL语句执行的结果集只查出有权限的数据。

2)without sharing 按SQL语句执行

测试1:当控制类为without sharing 对像所有权限为无,通过VF页面,让无权限的人是否能创建

实际测试后,是可以创建,所有人与创建人均为当前登录者,但是无法通过标准界面查看当前记录(赋值是程序给值)

测试2:当查询后台数据在VF页面展示时,查询日志时,显示获取了数据,前台通过循环时,打印空白。无法查看

当把对象勾选查看时,可以打印出结果,但是字段安全性不可见的字段还是不可见。

测试3:删除一条记录,结果显示可以删除。

测试4:修改一条记录,结果显示可以删除。(赋值是程序给值)

采用without sharing时,可以创建对象,能查询到结果,但是无法在VF页面中显示,当有对象查看权限时,是可以看到标准字段,当字段可见性没有勾选时,仍然是不可见的。

修改和删除能正常工作。(还需要测试的情况有:内部类的权限,当with sharing调用without sharing类的方法时权限,当with sharing extends without sharing 权限,当without sharing extends with sharing)

一般都是with sharing,without sharing解决特殊情况下。如最近遇到在市场活动下,创建报名,报名上的费用通过trigger汇总更新到市场活动上,销售没有市场活动编辑权限,但汇总又需要编辑权限的情况。

(如有错误欢迎指出!Ths)

 

 

 

 

转载于:https://my.oschina.net/SpringZhang/blog/713513

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值