欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Apex 基础

Apex 基础

2025/2/6 23:42:38 来源:https://blog.csdn.net/qq_51917627/article/details/145460023  浏览:    关键词:Apex 基础

概述

Apex 编程语言是一种面向对象的编程语言,它用于在 Salesforce 平台上开发自定义逻辑、自动化任务和集成。它的语法与 Java 类似,并支持面向对象的特性,如类、对象、继承、多态等。

1. 类的定义

在 Apex 中,类是对一组相关数据和方法的封装。类定义了对象的行为和状态。类可以包含字段(数据)和方法(操作)。下面是一个简单的类定义示例:

public class Car {// 成员变量(字段)public String make;public String model;public Integer year;// 构造函数public Car(String make, String model, Integer year) {this.make = make;this.model = model;this.year = year;}// 成员方法(行为)public void displayInfo() {System.debug('Make: ' + make + ', Model: ' + model + ', Year: ' + year);}
}

解释:

  • public class Car:定义了一个 Car 类。
  • 成员变量:类的字段 make、model 和 year,它们描述了 Car 类的状态。
  • 构造函数:Car 类的构造函数,用于初始化类的对象。在创建对象时传入 make、model 和 year,然后赋值给对应的字段。
  • 成员方法:displayInfo 方法用来输出车的信息。

2. 创建对象

在 Apex 中,可以通过使用类的构造函数来创建对象。下面是创建 Car 类对象并调用其方法的示例:

public class CarTest {public static void main() {// 创建 Car 类的对象Car myCar = new Car('Tesla', 'Model S', 2021);// 调用对象的方法myCar.displayInfo();}
}

解释:
创建对象:使用 new Car() 创建 Car 类的对象,并传入构造函数所需的参数。
调用方法:通过 myCar.displayInfo() 调用 Car 类中的 displayInfo 方法,输出 myCar 对象的信息。

3. 类的继承

Apex 支持类的继承,可以通过继承父类来创建子类,从而复用父类的代码。下面是一个继承示例:
virtual 类:一个类被声明为 virtual 时,表示它可以被其他类继承。默认情况下,Apex 中的类是不可继承的

public virtual class Car {// 成员变量(字段)public String make;public String model;public Integer year;// 构造函数public Car(String make, String model, Integer year) {this.make = make;this.model = model;this.year = year;}// 成员方法(行为)public virtual  void displayInfo() {System.debug('Make: ' + make + ', Model: ' + model + ', Year: ' + year);}
}
public class ElectricCar extends Car {public Integer batteryCapacity;// 构造函数public ElectricCar(String make, String model, Integer year, Integer batteryCapacity) {// 调用父类的构造函数super(make, model, year);this.batteryCapacity = batteryCapacity;}// 重写父类的方法public override  void displayInfo() {super.displayInfo();  // 调用父类的 displayInfo 方法System.debug('Battery Capacity: ' + batteryCapacity + ' kWh');}
}

解释:
继承:ElectricCar 类继承自 Car 类,通过 extends 关键字来实现。
构造函数:ElectricCar 类的构造函数调用了父类 Car 的构造函数(通过 super 关键字),并初始化了 batteryCapacity 字段。
方法重写:ElectricCar 重写了 displayInfo 方法,在父类方法的基础上添加了额外的功能。

4.多态

Apex 支持多态,意味着可以通过父类引用指向子类对象。下面是一个多态的示例:

public class VehicleTest {public static void main() {// 创建父类和子类的对象Car myCar = new Car('Toyota', 'Camry', 2020);ElectricCar myElectricCar = new ElectricCar('Nissan', 'Leaf', 2022, 62);// 创建父类引用指向子类对象Car myVehicle = myElectricCar;// 调用方法myVehicle.displayInfo();  // 由于多态,调用的是 ElectricCar 类中的 displayInfo 方法}
}

解释:
多态:Car 类型的变量 myVehicle 可以指向 ElectricCar 类的对象 myElectricCar。
方法调用:通过 myVehicle.displayInfo() 调用的是 ElectricCar 类中的 displayInfo 方法,而不是 Car 类中的方法。这是因为 myVehicle 实际上指向的是 ElectricCar 类的对象。

以上总结

类:类是数据和方法的封装,定义了对象的属性和行为。可以包含字段、构造函数和方法。
对象:对象是类的实例,通过 new 关键字创建。对象拥有类定义的属性和行为。
继承:子类可以继承父类的属性和方法,复用代码。
多态:可以使用父类类型的引用来指向子类对象,从而调用子类重写的方法。

Apex 数据类型

Apex 支持多种数据类型,下面是一些常见的基本数据类型:
基本数据类型:包括 Integer(整数)、Long(长整数)、Double(浮动小数)、String(字符串)、Boolean(布尔值)、Date(日期)、Datetime(日期时间)、Time(时间)等。
集合类型:
List:用于存储一组有序的数据,数据类型可以是任何 Apex 类型。

List<String> names = new List<String>{'Alice', 'Bob', 'Charlie'};

Set:用于存储唯一的元素,无序的。

Set<Integer> numbers = new Set<Integer>{1, 2, 3, 3};  // 重复的3只存储一次

Map:用于存储键值对的集合,类似于 Java 中的 HashMap。

Map<String, Integer> ageMap = new Map<String, Integer>{'Alice' => 25, 'Bob' => 30};

sObject:是 Salesforce 平台特有的数据类型,表示数据库中的记录(例如 Account、Contact 等)。
1.使用点符号(Dot Notation)赋值。

// 创建一个 sObject 类型的对象
Account acc = new Account();// 通过点符号赋值
acc.Name = 'Acme Corporation';
acc.Industry = 'Technology';
acc.AnnualRevenue = 1000000.0;// 插入记录
insert acc;

2.使用 put 方法赋值

// 创建一个 sObject 类型的对象
Account acc = new Account();// 使用 put 方法赋值,字段名需要传入 API 名称
acc.put('Name', 'Acme Corporation');
acc.put('Industry', 'Technology');
acc.put('AnnualRevenue', 1000000.0);// 插入记录
insert acc;

3.通过构造函数进行赋值

// 使用构造函数创建并赋值
Account acc = new Account(Name = 'Acme Corporation',Industry = 'Technology',AnnualRevenue = 1000000.0
);// 插入记录
insert acc;

Apex 事务控制

DML 操作:
Apex 提供了多种 DML 语句来对数据库中的记录进行增、删、改、查等操作:

// 插入记录
insert new Account(Name = 'New Account');// 更新记录
update acc;// 删除记录
delete acc;// 查询记录
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Name = 'New Account'];

事务控制:
可以通过 Database.rollback 来回滚事务,或者使用 Database.saveResult 来检查 DML 操作的结果。

Database.rollback(savepoint);

Apex 测试

Apex 具有内置的单元测试功能,测试代码必须覆盖一定比例的业务逻辑。所有的测试必须在 @isTest 注解的类中进行。
创建测试类:

@isTest
private class MyTestClass {@isTeststatic void testAccountInsert() {Account testAccount = new Account(Name = 'Test Account');insert testAccount;System.assertNotEquals(testAccount.Id, null);}
}

测试方法:使用 System.assert 来验证操作的正确性。

System.assertEquals(expected, actual, '错误信息');

模拟数据:使用 Test.startTest() 和 Test.stopTest() 来帮助模拟和控制测试执行时间。

Test.startTest();
// 执行操作
Test.stopTest();

Salesforce 安全性和共享规则

在 Apex 中处理数据时,要考虑数据的安全性和共享规则:

  • with sharing:表示类中的代码将遵循 Salesforce 的共享规则,限制用户对数据的访问。
  • without sharing:表示类中的代码不遵循共享规则,允许访问所有数据(通常仅在管理员角色下使用)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com